使用python编TCP服务端,监听指定的多个端口,支持多个客户端连接且相同端口可以相互通讯
时间: 2024-11-15 22:29:20 浏览: 28
在Python中,你可以使用socket库来创建一个多线程的TCP服务器,它能同时监听多个端口并处理多个客户端连接。以下是一个简单的示例,展示了如何实现这个功能:
```python
import socket
from threading import Thread
class MultiPortServer:
def __init__(self, ports):
self.ports = ports
self.servers = []
def start_server(self, port):
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('localhost', port))
server.listen(5) # 设置最大连接数
print(f"Listening on port {port}...")
self.servers.append(server)
Thread(target=self.accept_client, args=(server,))
server.close() # 防止socket泄露
def accept_client(self, server):
while True:
client, addr = server.accept()
client_handler_thread = Thread(target=self.handle_client, args=(client, addr))
client_handler_thread.start()
def handle_client(self, client, addr):
request = client.recv(1024).decode()
response = f"Hello from port {addr[1]}! Your message was: {request}"
client.sendall(response.encode())
client.close()
if __name__ == "__main__":
ports = [8000, 8001] # 可替换为你想要监听的端口列表
mp_server = MultiPortServer(ports)
for port in ports:
mp_server.start_server(port)
# 当所有端口都启动后,它们会等待客户端连接,并在新的线程中处理每个连接的请求
```
在这个例子中,`MultiPortServer`类维护了一个服务器列表,每个服务器对应一个端口。`start_server`方法启动一个新的服务器,而`accept_client`方法负责接收并处理新连接的客户端。`handle_client`方法则读取客户端的消息并返回响应。
阅读全文