【发布时间】:2014-11-19 11:47:57
【问题描述】:
语言:C
如何检查 UDP 套接字是否已经打开,以便增加使用的端口并在下一个套接字上发送,我不知道服务器需要多少套接字。
我也不能使用port 0,因为我必须从特定端口开始。
我现在唯一的解决方案是实现我自己的队列来跟踪打开的端口或尝试读取/proc/net/udp
是否有定义的 API?如果没有,您能否提交一个示例代码来跟踪我的程序使用的打开的端口?
【问题讨论】:
语言:C
如何检查 UDP 套接字是否已经打开,以便增加使用的端口并在下一个套接字上发送,我不知道服务器需要多少套接字。
我也不能使用port 0,因为我必须从特定端口开始。
我现在唯一的解决方案是实现我自己的队列来跟踪打开的端口或尝试读取/proc/net/udp
是否有定义的 API?如果没有,您能否提交一个示例代码来跟踪我的程序使用的打开的端口?
【问题讨论】:
如果端口已被使用,绑定将失败。如果失败,您只需要增加您尝试使用的端口即可。然后将其保存以供您要使用下一个端口时使用。绑定失败时返回 -1。顺便说一句,你用的是linux吗? 您可以设置最大和最小端口号,当您要使用的端口达到最大值时,将端口设置为等于最小值(这是最简单的方法)。 其他方法将需要共享内存或信号量和锁。
【讨论】:
while (bind(sockfdstr, (struct sockaddr *)&addr, sizeof addr) <0 ){ `port ++;` ` addr.sin_port = htons(port);` ` printf("尝试下一个端口 %d\n", port);` @ 987654322@ 但我使用了不同的套接字(TCP 用于其他操作)所以我感到困惑并认为它不起作用