Python 套接字服务器-获取已连接的用户';s ip

Python 套接字服务器-获取已连接的用户';s ip,python,python-2.7,socketserver,python-sockets,Python,Python 2.7,Socketserver,Python Sockets,我刚刚开始制作一个简单的套接字“聊天”服务器,用户通过telnet连接到我的服务器。我想知道如何获取已连接用户的IP地址,以便打印出用户的消息,如下所示: IP address: "Hello" 这是我目前使用的代码: def broadcast(self, message): for sessions in self.sessions: sessions.push('>>' + message + '\r\n') 提前感谢,如果您需要更多信息,请

我刚刚开始制作一个简单的套接字“聊天”服务器,用户通过
telnet
连接到我的服务器。我想知道如何获取已连接用户的IP地址,以便打印出用户的消息,如下所示:

IP address: "Hello"
这是我目前使用的代码:

def broadcast(self, message):
      for sessions in self.sessions:
          sessions.push('>>' + message + '\r\n')
提前感谢,如果您需要更多信息,请询问

编辑:


指向整个程序的链接:

。getpeername()
将为您提供所需内容

您应该添加到代码中:

class ChatSession(async_chat):
    def __init__(self,server,sock):
        async_chat.__init__(self, sock)
        self.server = server
        self.set_terminator("\r\n")
        self.data = []
        self.sock = sock # <--- add this, so you remember the socket object

你能把剩下的代码贴出来吗?当您实际建立connection@OfirIsrael请查看编辑。谢谢,尽管这引发了一个异常:“module”对象没有属性“getpeername”@DeanMWake不能在名为
socket
的模块上调用,而是在保持连接的实际套接字上调用(我知道注释很旧,但它有一个向上投票的问题)。谢谢,问题是我现在遇到了这个异常:只能将tuple(而不是“str”)连接到tuple,因为peername显示为(ip,socket)会导致错误。我想我可以只使用regex提取ipUse
sessions.push(sessions.sock.getpeername()[0]+':'+line+'\r\n')
也许?正如我说的,我还是个新手。我只是把元组当作数组使用,user=sessions.sock.getpeername();ip=user[0]:)这很有效,谢谢
def broadcast(self, line):
    for sessions in self.sessions:
        sessions.push(sessions.sock.getpeername() + ': ' + line + '\r\n')