python tcp服务器端,实现每有一个客户端连接,就创建一个新的套接字与新的新的线程,当其中一个客户端断开,正常删除该客户端的套接字,不影响其他
时间: 2024-02-24 09:57:29 浏览: 16
好的,这是一个比较典型的 Python TCP 服务器端的实现方式,你可以参考以下代码:
```python
import socket
import threading
def handle_client(client_socket):
# 处理客户端连接的线程函数
while True:
data = client_socket.recv(1024) # 接收客户端发送的数据
if not data: # 如果客户端关闭了连接,则退出循环
break
# 处理客户端发送的数据
# ...
# 客户端关闭连接,关闭客户端套接字
client_socket.close()
def main():
# 创建 TCP 服务器套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# 绑定服务器地址端口
server_address = ('', 8888)
server_socket.bind(server_address)
# 监听客户端连接
server_socket.listen(5)
while True:
# 等待客户端连接
client_socket, client_address = server_socket.accept()
# 创建新的线程处理客户端连接
t = threading.Thread(target=handle_client, args=(client_socket,))
t.start()
if __name__ == '__main__':
main()
```
在上面的代码中,`handle_client` 函数是处理客户端连接的线程函数,当有新的客户端连接时,就会创建一个新的线程来处理该客户端的连接。当客户端关闭连接时,该函数会退出循环,关闭客户端套接字。主函数中,使用一个无限循环来等待客户端连接,每当有新的客户端连接时,就创建一个新的线程来处理该连接。