Python : 클라이언트를 시뮬레이션하여 서버에 파일 다운로드 요청을 보냅니다.

요구 사항 : 클라이언트에 파일 이름을 입력하고 클라이언트를 통해 서버에 파일 이름을 보냅니다. 서버는 파일의 내용을 클라이언트에 반환하고 클라이언트의 작업 내용을 시뮬레이션하여 서버에 파일 다운로드 요청을 보냅니다.

수행해야 할 첫 번째 준비는 다음과 같습니다.
환경 준비

  • 동일한 네트워크 세그먼트에있는 두 대의 컴퓨터 (둘 다 Python 환경을 갖추고 있어야 함), 동일한 네트워크 세그먼트는 동일한 Wi-Fi에 액세스하는 두 대의 컴퓨터로 이해 될 수 있습니다.
  • 컴퓨터가 하나 뿐인 경우 시뮬레이션을위한 가상 머신을 설정할 수 있습니다 (python 환경 필요).

컴퓨터 중 하나의 IP 주소를 확인하고 서버로 사용합니다.
저는 Mac이고 확인 내용은 다음과 같습니다.
여기에 사진 설명 삽입

손에 정확히 두 대의 컴퓨터가 있으므로 하나는 서버로, 다른 하나는 클라이언트로 사용하고 다음 코드를 작성합니다.

서버 측

import socket,os

# 创建一个基于tcp的socket连接
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# 绑定ip地址和端口号
s.bind(('192.168.1.104',9000))

# 监听
s.listen(128)

# 接受客户端发来的请求
client_socket,client_addr = s.accept()
data = client_socket.recv(1024).decode('utf8')

# 读取文件,返回给客户端
if os.path.isfile(data):
    print('读取文件,将文件内容返回给客户端')
    with open(data,'r',encoding = 'utf8') as file:
        content = file.read()
        client_socket.send(content.encode('utf8'))
else:
    print('文件不存在')

# 关闭socket
s.close()

고객 입장에서

import socket

# 创建一个基于tcp的socket连接
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# 连接服务ip地址及端口号
s.connect(('192.168.1.104',9000))

# 向服务端发送数据
file_name = input('PLEASE INPUT FILE NAME:')
s.send(file_name.encode('utf8'))

# 接受服务端返回的文件内容,并写入到文件
content = s.recv(1024).decode('utf8')
with open(file_name,'w',encoding='utf8') as file:
    file.write(content)

# 关闭socket
s.close()

추천

출처blog.csdn.net/weixin_42161670/article/details/114603900