Python中的套接字编程 - 实际的远程端口

时间:2011-03-16 19:52:37

标签: python sockets

我最近在Python中做过一些网络编程,并且想确认我认为在客户端和服务器之间发生的流程:

  • 服务器监听给定的 广告港口(9999)
  • 客户端通过创建新套接字(例如1111)
  • 连接到服务器
  • 服务器接受客户端请求并自动生成一个新套接字(????),它现在可以处理客户端和服务器之间的通信

如您所见,在上面的流程中涉及3个插座:

  • 侦听客户端的服务器套接字
  • 客户端产生的套接字
  • 服务器生成的用于处理客户端的套接字

我知道获取前两个套接字(9999和1111)的端口,但不知道如何获得与服务器端客户端通信的“真实”端口。我正在使用的代码片段现在是:

def sock_request(t):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(('localhost', 9999))
    print('local sock name: ' + str(s.getsockname()))
    print('peer sock name: ' + str(s.getpeername()))
    s.send('a' * 1024 * int(t))
    s.close()

在服务器上获取与客户端实际通信的“端口”号码的任何帮助都将非常感激。 TIA。

1 个答案:

答案 0 :(得分:4)

新套接字位于同一端口。 TCP连接由4条信息标识:源IP和端口,以及目标IP和端口。因此,您的服务器在同一端口(即侦听套接字和接受的套接字)上有两个套接字的事实不是问题。