gpt4 book ai didi

c - 套接字 - 如何找出分配给我的端口和地址

转载 作者:可可西里 更新时间:2023-11-01 02:28:49 28 4
gpt4 key购买 nike

我无法弄清楚这一点 - 我正在使用本指南在 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

绑定(bind)成功后,如何查看实际分配给自己的IP和端口?

最佳答案

如果是服务器套接字,你应该调用listen()在你的套接字上,然后是getsockname()找到它正在监听的端口号:

struct sockaddr_in sin;
socklen_t len = sizeof(sin);
if (getsockname(sock, (struct sockaddr *)&sin, &len) == -1)
perror("getsockname");
else
printf("port number %d\n", ntohs(sin.sin_port));

至于 IP 地址,如果您使用 INADDR_ANY,那么服务器套接字可以接受到任何机器 IP 地址的连接,并且服务器套接字本身没有特定的 IP 地址。例如,如果您的机器有两个 IP 地址,那么您可能会在此服务器套接字上获得两个传入连接,每个连接都有不同的本地 IP 地址。您可以在特定连接的套接字上使用 getsockname()(您从 accept() 获得),以便查明该连接上正在使用哪个本地 IP 地址连接。

关于c - 套接字 - 如何找出分配给我的端口和地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4046616/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com