【问题标题】:socket programming with getaddrinfo使用 getaddrinfo 进行套接字编程
【发布时间】:2014-04-06 21:39:55
【问题描述】:

我在 linux 的套接字编程中使用 getaddrinfo。我已经创建了一个客户端和一个服务器。目前客户端有一个硬编码的静态端口号。一切正常。

但我希望系统在连接到服务器时为客户端动态分配端口号。如何使用 getaddrinfo 执行此操作? 我正在使用 TCP 套接字。

【问题讨论】:

  • 这没有意义 - 客户端应该连接到指定 IP 地址和端口号上的服务器。一旦建立连接,服务器就不能随意分配新的端口号 - 当然除非我误解了你想要的。

标签: linux sockets tcp


【解决方案1】:

在调用connect 之前不要调用bind,TCP 堆栈将为客户端分配一个“随机”源端口。如果您需要知道从哪个端口连接(通常不需要),您可以在调用connect 之后调用getsockaddr

或者,可以调用bind 指定端口0。在这种情况下,堆栈将再次为客户端分配一个“随机”未使用的源端口以进行连接。如果您不想在特殊情况下允许实现选择端口,或者出于某种原因需要指定本地 IP 地址,则首选此选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多