Python:クライアントをシミュレートして、ファイルのダウンロード要求をサーバーに送信します

要件:クライアントでファイル名を入力し、クライアントを介してファイル名をサーバーに送信します。サーバーはファイルの内容をクライアントに返し、ファイルのダウンロード要求をサーバーに送信するクライアントの作業内容をシミュレートします。

実行する必要がある最初の準備は次のとおりです。
環境の準備

  • 同じネットワークセグメントの下にある2台のコンピューター(両方ともPython環境を備えている必要があります)、同じネットワークセグメントは、同じWi-Fiにアクセスする2台のコンピューターとして理解できます。
  • コンピューターが1台しかない場合は、シミュレーション用に仮想マシンをセットアップできます(Python環境が必要です)

いずれかのパソコンのIPアドレスを確認してサーバーとして使用します。
私はMacです確認内容は以下のとおりです。
ここに画像の説明を挿入します

私はちょうど2台のコンピューターを手にしているので、1台をサーバーとして、もう1台をクライアントとして使用し、次のコードを記述します。

サーバ側

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