Linux 用getaddrinfo进行socket编程

Linux 用getaddrinfo进行socket编程,linux,sockets,tcp,Linux,Sockets,Tcp,我在linux的socket编程中使用getaddrinfo。我已经创建了一个客户端和一个服务器。当前,客户端有一个硬编码的静态端口号。一切正常 但是我希望系统在客户端连接到服务器时动态地为客户端分配一个端口号。如何使用getaddrinfo实现这一点? 我正在使用TCP套接字。在调用connect之前不要调用bind,TCP堆栈将为客户端分配一个“随机”源端口。如果需要知道连接的端口(通常不需要),可以在调用connect后调用getsockaddr 或者,可以调用bind指定端口0。在这种情

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

但是我希望系统在客户端连接到服务器时动态地为客户端分配一个端口号。如何使用getaddrinfo实现这一点?
我正在使用TCP套接字。

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


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

这没有意义-客户端应使用指定的IP地址和端口号连接到服务器。一旦建立了连接,服务器就不能随意分配一个新的端口号——当然,除非我误解了您在这里想要什么。