我想要做的是解释有点复杂,但希望这个解释是有道理的,有人可以提供帮助
我有一个python套接字客户端和服务器。一切正常,为了开发目的,我让服务器也在新客户端连接时打印一条消息。我注意到服务器将输出如下内容:
New connection on 127.0.0.1:26386
服务器在端口8888上运行。无论如何,我注意到每个客户端的客户端端口都不同。
New connection on 127.0.0.1:26397
New connection on 127.0.0.1:26398
等等。我想要的是非常简单:我希望客户端打印其用于连接服务器的端口。因此客户端1将如上所示打印26386。下一个26397和26398等等。
我该怎么做?我理解这个解释可能有点奇怪,如果你想让我澄清什么,请发表评论。
由于
答案 0 :(得分:1)
您想要的是获取套接字的本地地址,即源IP地址和端口。这可以使用socket.getsockname来完成,类似的socket.getpeername可用于获取目标IP地址和端口。即在你的例子中,你会得到:
# on the client side
print(socket_to_server.getsockname()) # -> (127.0.0.1,26386)
print(socket_to_server.getpeername()) # -> (127.0.0.1, 8888)
# on the server side
print(socket_from_client.getsockname()) # -> (127.0.0.1, 8888)
print(socket_from_client.getpeername()) # -> (127.0.0.1,26386)