2

我刚刚开始制作一个简单的套接字“聊天”服务器,用户可以通过telnet. 我想知道如何获取连接的用户 IP 地址,以便它会打印出这样的用户消息:

IP address: "Hello"

这是我目前使用的代码:

def broadcast(self, message):
      for sessions in self.sessions:
          sessions.push('>>' + message + '\r\n')

在此先感谢,如果您需要更多信息,请询问。

编辑:

整个程序的链接:http: //pastebin.com/9vzuiLZe

4

2 回答 2

4

<your-socket-instance>.getpeername()会给你你想要的

于 2013-09-06T10:55:22.890 回答
3

您应该添加到您的代码:

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

然后使用@staticd 建议的内容:

def broadcast(self, line):
    for sessions in self.sessions:
        sessions.push(sessions.sock.getpeername() + ': ' + line + '\r\n')
于 2013-09-06T13:17:04.863 回答