ソケットを使用してファイルを転送の方法
ソケットを利用したファイル転送は、以下のような手順で構成されます。
- サーバー側でソケットを作成し、対応する IP アドレスとポート番号にバインドします。
- リッスン
- クライアント側はソケットを作成して、サーバー側のIPアドレスとポート番号に接続します。
- 受け入れる
- クライアントとサーバーは、新しいソケットからデータ送信を行っています。
- クライアントは送信するファイルデータをサーバーに送信し、サーバーはそれを受け取りローカルファイルに保存します。
- ソケット通信でクライアントとサーバーの通信が終了したらソケット接続を閉じる。
次に簡単なサンプルコードを示します。
サーバー側のコード:
import socket
# 创建socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址和端口号
server_address = ('localhost', 8888)
server_socket.bind(server_address)
# 开始监听
server_socket.listen()
# 接受客户端连接请求
client_socket, addr = server_socket.accept()
# 接收文件数据并保存到本地文件
with open('received_file.txt', 'wb') as file:
while True:
data = client_socket.recv(1024)
if not data:
break
file.write(data)
# 关闭连接
client_socket.close()
server_socket.close()
クライアントコード:
import socket
# 创建socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
server_address = ('localhost', 8888)
client_socket.connect(server_address)
# 打开要传输的文件
with open('file_to_send.txt', 'rb') as file:
# 读取文件数据并发送给服务器
while True:
data = file.read(1024)
if not data:
break
client_socket.sendall(data)
# 关闭连接
client_socket.close()
実際のアプリケーションでは、より多くの例外処理、データ検証、セキュリティ検証などを追加する必要があるかもしれません。