sockey本地通信,多客户端连接,关闭其中一个可以实现嘛
时间: 2023-05-27 10:07:58 浏览: 74
可以实现。在sockey本地通信中,可以使用select函数来实现多客户端连接的管理。当有客户端连接时,可以将其加入到一个客户端列表中,当关闭其中一个客户端时,可以从列表中将其移除。具体实现可以参考下面的代码:
```python
import socket
import select
# 创建套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 8888))
server_socket.listen(5)
print('Server started')
# 客户端列表
client_sockets = []
while True:
# 使用select函数监听套接字列表
read_list, _, _ = select.select([server_socket] + client_sockets, [], [])
for sock in read_list:
if sock is server_socket:
# 有新客户端连接
client_socket, _ = server_socket.accept()
client_sockets.append(client_socket)
print('New client connected')
else:
# 有客户端发送数据
data = sock.recv(1024)
if not data:
# 客户端关闭连接
sock.close()
client_sockets.remove(sock)
print('Client disconnected')
else:
# 处理客户端发送的数据
print('Received data:', data.decode())
```
在上面的代码中,使用select函数监听了服务器套接字和客户端套接字列表。当服务器套接字上有新连接时,将其加入到客户端列表中;当客户端套接字上有数据时,处理数据;当客户端套接字关闭时,将其从客户端列表中移除。