【问题标题】:Setting destination port with TCP socket使用 TCP 套接字设置目标端口
【发布时间】:2013-03-13 16:36:34
【问题描述】:

在非阻塞 TCP 套接字的源端口和目标端口不一致的情况下(对于 p2p 应用程序),如何指定套接字将 Connect() 连接到的目标端口?

【问题讨论】:

  • “不同意”是什么意思?在 TCP 协议中,源端口和目的端口是不相关的数字。例如。 HTTP 的目的端口一般是 80,但源端口可以是任何东西。

标签: c++ tcp network-programming


【解决方案1】:

在 P2P 的情况下,客户端首先连接到 torrent 以获取对等点(播种机)列表和对等点打开的端口号。然后,要下载的系统将使用跟踪器提供的地址和端口连接到对等体。

对等点不受限制(通常)并接受来自任何源地址或 ip 的连接

【讨论】:

    【解决方案2】:

    在传递给 connect() 调用的 sockadder-struct 中指定连接的目标端口。由于您没有指定您正在使用哪个操作系统,因此很难提供具体示例。但是,对于 Linux 和 Windows,您通常会使用 getaddrinfo() 加载 sockaddr-struct。 here 提供了一个不错的 Linux 示例,而 MS 在其官方文档中有一个 example

    【讨论】:

    • Kristian:我正在使用 Windows 和 Linux Ubuntu 12.10,因为这个应用程序将有两个操作系统的版本。
    • 好的。 getaddrinfo 的签名非常相似,所以对于一些小的#ifdef WINDOWS/LINUX,你的代码应该是平台无关的。
    猜你喜欢
    • 2021-09-26
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多