【问题标题】:Specify port number in TCP client socket在 TCP 客户端套接字中指定端口号
【发布时间】:2014-11-19 02:52:13
【问题描述】:

我正在使用 C/C++ 编写 TCP 客户端套接字。 如何在我的客户端套接字中指定某些端口号? 假设客户端套接字将与同一台服务器建立两个连接, 第二个连接应该使用相同的本地(客户端)端口号 连接。如何将参数传递到我的代码中?

本地端口号是在connect()之后立即决定的吗?还是存储在 sock_new=socket() 中?

提前致谢。

【问题讨论】:

  • 您也许可以将套接字绑定()到特定的客户端端口,但我不知道您为什么需要这样做;让第二个连接使用与第一个不同的客户端端口有什么问题?当然,它们都将连接到同一个服务器端端口。

标签: c++ sockets tcp


【解决方案1】:

假设客户端套接字将与同一个服务器建立两个连接,第二个连接应该使用相同的本地(客户端)端口号进行连接。

不可能。元组 {source IP, source port, target IP, target port} 必须是唯一的,才能识别连接。

你想解决什么实际问题?

【讨论】:

  • 抱歉没有说清楚。第二个连接在第一个连接终止后立即开始。所以我认为它仍然可以访问同一个端口。(因为第一个连接被关闭)
  • 你可以尝试保存第一个套接字的本地端口(使用getsockname(),并将第二个套接字绑定到同一个本地端口,在套接字上设置SO_REUSEADDR 之后,但是TCP 的规则规定了两次连续使用同一目标的出站端口之间的TIME_WAIT 时间段,因此几乎可以肯定它不起作用。听起来您应该只保持第一个连接打开。使用连接池。
猜你喜欢
  • 1970-01-01
  • 2019-01-31
  • 1970-01-01
  • 2012-03-29
  • 2013-10-24
  • 2010-09-25
  • 1970-01-01
  • 2015-06-24
  • 1970-01-01
相关资源
最近更新 更多