Python 2.7 Python多线程|向特定客户端发送消息

Python 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

我正在尝试向特定客户发送消息。我已经创建了一个服务器,可以向所有客户端发送消息,但我不知道如何向特定客户端发送消息,这是我的服务器代码:

server.py

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循环非常相似,只是如果用户存在,可能会设置一个布尔值。

谢谢您的回答。我现在有了一个发送特定客户信息的想法,感谢您的帮助