【发布时间】:2011-05-02 02:09:09
【问题描述】:
我无法解决这个问题 - 我正在使用本指南在 C 中使用套接字 - http://binarii.com/files/papers/c_sockets.txt
我正在尝试使用以下方式自动获取我的 ip 和端口:
server.sin_port = 0; /* bind() will choose a random port*/
server.sin_addr.s_addr = INADDR_ANY; /* puts server's IP automatically */
...
...
bind(int fd, struct sockaddr *my_addr,int addrlen); // Bind function
绑定成功后,如何知道我实际分配了哪些 IP 和端口?
【问题讨论】:
-
实际上,当你指定
INADDR_ANY时发生的事情并不是它自动放入服务器的IP,它所做的是找到所有接口,并绑定到每个接口。因此,您的问题有很多正确答案。 -
嗯 - 谢谢你。我正在处理的一项任务要求我使用指定的代码自动获取 IP 和端口,但我要在屏幕上打印客户端连接的服务器地址和端口。这就是我试图弄清楚该怎么做。如果我使用 sockaddr 结构,我只会得到 0.0.0.0 和端口 0。
-
实际上它并没有“绑定到它们中的每一个”。它不绑定到其中的任何。相反,它告诉堆栈表现得好像它被绑定到所有。这就是为什么它被称为 INADDR_ANY。