使用getaddrinfo进行套接字编程

时间:2014-04-06 21:39:56

标签: linux sockets tcp

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

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

1 个答案:

答案 0 :(得分:0)

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

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