ネイティブなPythonクライアントとサーバー間で通信する方法
Pythonクライアントはソケット経由でサーバー側と通信できます。
- サーバーはまずソケットを作成し、指定の IP アドレスとポートにバインドする必要があります
import socket
# 创建一个套接字对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址和端口号
server_address = ('localhost', 8888) # 使用本地地址和自定义的端口号
server_socket.bind(server_address)
- サーバー側は、クライアントからの接続要求を受け取り、接続受付る必要がある。
# 开始监听连接
server_socket.listen(1) # 最多允许1个客户端连接
# 接受客户端的连接请求
client_socket, client_address = server_socket.accept()
- クライアントはソケットを作成し、サーバのIPアドレスとポートに接続する必要がある。
import socket
# 创建一个套接字对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到服务器端的IP地址和端口号
server_address = ('localhost', 8888) # 使用服务器端的地址和端口号
client_socket.connect(server_address)
- クライアント側とサーバー側はソケットを用いてデータのやり取りを行うことができます。例えば、メッセージを送受信してやり取りが行えます。
# 服务器端发送消息给客户端
message = 'Hello, client!'
client_socket.send(message.encode())
# 客户端接收服务器端发送的消息
message = client_socket.recv(1024).decode()
print('Received message:', message)
- 最後に、通信が終了したらソケットをクローズする必要があります。
# 关闭套接字
client_socket.close()
server_socket.close()
上記はサーバーの簡易的なサンプルコードで、実際に応用するには適宜拡張・変更を要します。また、サーバー側の開発を簡潔にするために、Pythonのサードパーティライブラリ(socketserverやasyncioなど)を利用することもできます。