Python 2.7 Python多线程|向特定客户端发送消息
我正在尝试向特定客户发送消息。我已经创建了一个服务器,可以向所有客户端发送消息,但我不知道如何向特定客户端发送消息,这是我的服务器代码: server.pyPython 2.7 Python多线程|向特定客户端发送消息,python-2.7,Python 2.7,我正在尝试向特定客户发送消息。我已经创建了一个服务器,可以向所有客户端发送消息,但我不知道如何向特定客户端发送消息,这是我的服务器代码: server.py from socket import * from codecs import decode #from chatrecord import ChatRecord from threading import Thread from time import ctime class ClientHandler(Thread): de
from socket import *
from codecs import decode
#from chatrecord import ChatRecord
from threading import Thread
from time import ctime
class ClientHandler(Thread):
def __init__(self,client,address):
global sockets
global addresses
Thread.__init__(self)
self._client = client
self._address = address
sockets.append(self._client)
addresses.append(self._address)
def run(self):
self._client.send('Welcome to the chatroom!\n')
while 1:
message =self._client.recv(BUFSIZE)
print '\n\n',sockets
if not message:
print "Client disconnected."
addIndex=sockets.index(self._client)
del sockets[addIndex]
del addresses[addIndex]
self._client.close()
break
else:
if 'ONLINE#' in message:
for x in sockets:
if (x!=self._client):
try:
x.send(message[7:])
except:
print 'disconnected'
continue
print message[7:]
else:
for x in sockets:
try:
x.send(message)
/*sockets is the list of all client*/
except:
print ' '
continue
print message
HOST = 'localhost'
PORT = 1235
ADDRESS = (HOST,PORT)
BUFSIZE = 1024
server = socket(AF_INET,SOCK_STREAM)
server.bind(ADDRESS)
server.listen(5)
sockets=[]
addresses=[]
while True:
print "Waiting for connection..."
client, address = server.accept()
print('...client connected from: ',address)
handler = ClientHandler(client,address)
handler.start()
因为这是一个聊天室,所以我会在客户端连接时创建一个带有昵称的字典
客户端会收到提示->选择名称
客户端选择:clientname=jimbob
mydict={}
mydict[clientname]=自身地址
然后,您可以简单地通过昵称获取用户
对于客户端,在mydict.iteritems()中添加:
如果客户端==“jimbob”:
目的地址=地址
打破
我已经有一段时间没有编写python了,所以您可能希望将其视为更多的伪代码
您可能还需要查阅文档以了解
编辑:您还需要查看客户端连接时是否使用了该昵称。它与上面的for循环非常相似,只是如果用户存在,可能会设置一个布尔值。谢谢您的回答。我现在有了一个发送特定客户信息的想法,感谢您的帮助