欢迎访问宙启技术站
智能推送

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方法关闭连接。