Python存储客户端地址?

Python存储客户端地址?,python,Python,下面是我的简单服务器代码 我想存储/打印任何客户端发送数据的地址 例如,输出应为: Connection from ('127.0.0.1', 61334) foo from ('127.0.0.1', 61334) Connection from ('127.0.0.1', 61335) bar from ('127.0.0.1', 61335) baz from ('127.0.0.1', 61334) qux from ('127.0.0.1', 61335) 有人叫我用dic

下面是我的简单服务器代码

我想存储/打印任何客户端发送数据的地址

例如,输出应为:

Connection from ('127.0.0.1', 61334)

foo from ('127.0.0.1', 61334)

Connection from ('127.0.0.1', 61335)

bar from ('127.0.0.1', 61335)

baz from ('127.0.0.1', 61334)

qux from ('127.0.0.1', 61335)
有人叫我用dict,但我不知道怎么用

import select
import socket

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind(('', 8888))
server_socket.listen(5)
print "Listening on port 8888"

read_list = [server_socket]
while True:
    readable, writable, errored = select.select(read_list, [], [])
    for s in readable:
        if s is server_socket:
            client_socket, address = server_socket.accept()
            read_list.append(client_socket)
            print "Connection from", address
        else:
            data = s.recv(1024)
            if data:
                s.send(data)
            else:
                s.close()
                read_list.remove(s)
很抱歉打扰大家

解决方案如下:

import select
import socket

#Global Variables
clientInfo={}

def storeClient(client_socket,address):
    clientInfo[client_socket]=address


server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind(('', 8888))
server_socket.listen(5)
print "Listening on port 8888"

read_list = [server_socket]
while True:
    readable, writable, errored = select.select(read_list, [], [])
    for s in readable:
        if s is server_socket:
            client_socket, address = server_socket.accept()
            read_list.append(client_socket)
            print "Connection from", address
            storeClient(client_socket,address)
        else:
            data = s.recv(1024)
            if data:
                print data, "from: ", clientInfo[s]
                s.send(data)
            else:
                s.close()
                read_list.remove(s)

这里真正的问题是什么?为什么不能将ip地址存储为dict的密钥?你的观点是什么?我现在就知道了,更新了,谢谢。为什么你需要一个专门的方法呢?因为,我将在这个新方法下做更多的事情,并且可能会将它重命名为storeClientInfo。(适当)