【发布时间】:2015-11-05 14:10:09
【问题描述】:
是否有一种惯用的方式来指定要绑定到的特定地址,而是一个随机端口?
在我的应用程序中,我打开了几十个连接。我在 connect() 之前调用了 bind(),以便我可以指定应该建立连接的 IP 地址。但是,我必须自己找到一个开放的端口。它现在工作正常,但如果我需要打开数千个连接,它可能会成为一个问题,因为找到一个打开的端口会变得越来越慢
int fd;
struct sockaddr_in addr;
fd = socket(AF_INET, SOCK_STREAM, 0);
while (TRUE)
{
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr("192.168.0.1");
addr.sin_port = htons((rand() % 65000) + 1);
if (bind(fd, (struct sockaddr *)&addr, sizeof (struct sockaddr_in)) == 0)
break;
}
我考虑编写自己的“端口管理”系统,但我想我会先尝试看看操作系统是否已经有一个功能,然后再继续这样做
【问题讨论】:
-
我不会将其标记为重复,因为它指的是不同的语言,但本质上是相同的:stackoverflow.com/questions/1365265/…