用于连接服务器的Python Print Socket

时间:2016-12-12 16:56:16

标签: python sockets

我想要做的是解释有点复杂,但希望这个解释是有道理的,有人可以提供帮助

我有一个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等等。

我该怎么做?我理解这个解释可能有点奇怪,如果你想让我澄清什么,请发表评论。

由于

1 个答案:

答案 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)