我在 Linux 的套接字编程中使用 getaddrinfo。我已经创建了一个客户端和一个服务器。目前客户端有一个硬编码的静态端口号。一切正常。
但我希望系统在客户端连接到服务器时动态为其分配端口号。如何使用 getaddrinfo 执行此操作? 我正在使用 TCP 套接字。
最佳答案
只要在调用 connect
之前不要调用 bind
,TCP 堆栈就会为客户端分配一个“随机”源端口。如果您需要知道要从哪个端口进行连接(通常不需要),可以在调用 connect
之后调用 getsockaddr
。
或者,可以调用 bind
指定端口 0。在这种情况下,堆栈将再次为客户端分配一个“随机”未使用的源端口以进行连接。如果您不希望在特殊情况下允许实现选择端口,或者由于某种原因需要指定本地 IP 地址,则首选此选项。
关于linux - 使用 getaddrinfo 进行套接字编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22900374/