利用socket模块做多个端口的服务器对应多个客户端进行长连接,请写个详细的python程序说明
时间: 2024-02-11 10:08:05 浏览: 22
好的,下面是一个基于socket模块实现多个端口的服务器对应多个客户端进行长连接的Python程序:
```python
import socket
import threading
def handle_client(client_socket):
while True:
# 接收客户端发送的数据
data = client_socket.recv(1024)
if not data:
break
# 处理数据,这里简单地将接收到的数据原样发送回去
client_socket.send(data)
# 关闭客户端连接
client_socket.close()
def start_server(port):
# 创建socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址和端口号
server_socket.bind(('0.0.0.0', port))
# 开始监听端口
server_socket.listen(5)
print(f'Server is listening on port {port}')
while True:
# 等待客户端连接
client_socket, client_address = server_socket.accept()
print(f'New connection from {client_address}')
# 创建新的线程来处理客户端连接
client_thread = threading.Thread(target=handle_client, args=(client_socket,))
client_thread.start()
# 启动多个端口的服务器
if __name__ == '__main__':
for port in (8000, 9000, 10000):
server_thread = threading.Thread(target=start_server, args=(port,))
server_thread.start()
```
这个程序启动了三个端口号分别为8000、9000、10000的服务器,并且对每个客户端连接都创建了一个新的线程进行处理。每个客户端连接都会持续保持,直到客户端主动关闭连接或者出现网络故障。在处理客户端连接时,这个程序简单地将客户端发送的数据原样发送回去,可以根据实际需要进行修改。