1. 必要なモジュールをインポートします。Python では、一般的に使用されるネットワーク プログラミング モジュールは とsocket
ですstruct
。ネットワーク通信とデータ処理のためにこれら 2 つのモジュールをインポートします。
import socket
import struct
2. ソケット接続の確立: クライアントはサーバーとのソケット接続を確立する必要があります。モジュールsocket
の関数を使用してsocket()
ソケット オブジェクトを作成し、connect()
メソッドを使用してそれをサーバーの IP アドレスとポート番号に接続できます。
# 创建套接字对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
server_address = ('服务器IP地址', 端口号)
client_socket.connect(server_address)
3. イメージ ファイルを開いてデータを読み取ります。クライアントは、転送するイメージ ファイルを開き、ファイル データをバイナリ形式で読み取る必要があります。
# 打开图片文件并读取数据
image_file = open('图片文件路径', 'rb')
image_data = image_file.read()
image_file.close()
4. 画像サイズ情報の送信: 実際の画像データを送信する前に、サーバーが画像データを正しく受信して解析できるように、クライアントは画像サイズ情報をサーバーに送信する必要があります。struct
このモジュールを使用すると、画像サイズを 4 バイトの符号なし整数にパックし、send()
メソッドを使用してサーバーに送信できます。
# 发送图片大小信息
image_size = len(image_data)
client_socket.send(struct.pack('!I', image_size))
5. 画像データの送信: クライアントは、send()
このメソッドを使用して画像データをサーバーに送信します。
# 发送图片数据
client_socket.send(image_data)
6. サーバーからの応答を受信する: クライアントは、recv()
サーバーからの応答を受信するメソッドを使用して、画像が正常に受信されたかどうかを確認したり、その他の処理を実行したりできます。ここでの応答内容や処理方法は、ニーズに応じて決定されます。
# 接收服务器响应
response = client_socket.recv(1024)
# 处理响应
7. ソケット接続を閉じる: 送信が完了したら、クライアントはサーバーとのソケット接続を閉じる必要があります。
# 关闭套接字连接
client_socket.close()