我需要获取(客户端)套接字使用的本地端口。
我的理解是Windows Sockets performs an implicit bind function call
, 所以getsockname()
after sendto()
应提供分配的端口。但是,它始终将端口号设置为 0。我错过了什么吗?
ex:
if (sendto(sockfd, ...) != SOCKET_ERROR)
printf("Sent\n");
if (getsockname(sockfd, (struct sockaddr*)&sin, &sinlen) != SOCKET_ERROR)
printf("port = %u\n", ntohs(sin.sin_port);
else
printf("Error");
//result: Sent, port = 0
重新启动计算机即可解决问题。目前尚不清楚真正的原因,但目前我很高兴它能起作用。
如果有人有解决问题的想法without重新启动(对于未来的读者),请随意发帖。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)