我有一台服务器正在监听连接到它的所有客户端,并且每个客户端都应该有这个“用户名”,但是我被困在这里......当客户想要发送消息时另一个客户端,他们发送另一个客户端的用户名作为发送到服务器的消息中的第一个单词。然后我不知道如何将消息定向到正确的套接字(接收客户端)。我应该如何将客户端链接到其套接字?所以我可以调用socket.send ??
我目前正在修改此网站的代码:http://www.binarytides.com/code-chat-application-server-client-sockets-python/
谢谢!
答案 0 :(得分:0)
def broadcast_data (sock, message):
#Do not send the message to master socket and the client who has send us the message
for socket in CONNECTION_LIST:
if socket != server_socket and socket != sock :
try :
socket.send(message)
except :
# broken socket connection may be, chat client pressed ctrl+c for example
socket.close()
CONNECTION_LIST.remove(socket)
此功能可用作发送功能的起点
def send_data (sock, message):
#send message to only one client
#sock is the socket of the client to send to
try :
sock.send(message)
except :
# broken socket connection may be, chat client pressed ctrl+c for example
sock.close()
CONNECTION_LIST.remove(socket)
然后你可以有一个套接字字典,将它们与用户名相关联
usernameSockets={}
usernameSockets[username]=socket_for_user_name
然后你可以调用send_data函数,如
send_data(usernameSockets[username],message)
在您链接的代码中,没有获取用户名的方法,因此您必须让客户端在连接时将其用户名发送到服务器,以便能够填充我上面提到的字典。