Python中基于ThreadingTCPServer的网络通信
发布时间:2023-12-25 09:19:26
下面是一个基于ThreadingTCPServer的简单网络通信的例子:
import socketserver
# 定义一个处理请求的类
class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self):
# 接收客户端的数据
data = self.request.recv(1024).strip()
# 打印接收到的数据
print("{} wrote:".format(self.client_address[0]))
print(data)
# 发送响应给客户端
response = "Hello from server!"
self.request.sendall(response.encode())
# 创建一个ThreadingTCPServer对象,监听本地地址和端口
server = socketserver.ThreadingTCPServer(('localhost', 8000), MyTCPHandler)
# 启动服务器,等待客户端连接和请求处理
server.serve_forever()
在上面的例子中,MyTCPHandler是一个自定义的处理请求的类,它继承自socketserver.BaseRequestHandler。在handle方法中,我们可以处理客户端发送过来的请求数据,并且发送响应给客户端。
通过创建一个ThreadingTCPServer对象,并传入服务器的地址和端口以及处理请求的类,然后调用serve_forever方法,就可以启动服务器,开始监听和处理客户端的连接和请求。
下面是一个客户端的使用例子:
import socket
# 创建一个TCP/IP socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到服务器
server_address = ('localhost', 8000)
client_socket.connect(server_address)
# 发送数据给服务器
message = "Hello from client!"
client_socket.sendall(message.encode())
# 接收服务器的响应数据
data = client_socket.recv(1024).decode()
print("Server response:", data)
# 关闭连接
client_socket.close()
在上面的例子中,客户端首先创建了一个TCP/IP socket对象,然后通过connect方法连接到服务器的地址和端口。
接下来,客户端可以调用sendall方法发送数据给服务器,并通过recv方法接收服务器的响应数据。
最后,客户端可以调用close方法关闭连接。
