gpt4 book ai didi

c - recvfrom() 总是返回零远程地址

转载 作者:行者123 更新时间:2023-11-30 18:24:41 26 4
gpt4 key购买 nike

我正在编写一个简单的 udp 服务器应用程序,当我尝试获取远程连接用户的地址时遇到错误。

while(run == 1) {
struct sockaddr_in client_addr;
char message[1024];
int len = recvfrom(sockfd, message, 1024, 0, (struct sockaddr*)&client_addr, sizeof client_addr);

printf("Received request from: %s#%d\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));
}

它总是返回远程地址:0.0.0.0#0

最佳答案

如果您阅读了 recvfrom 的文档,您将看到最后一个参数是一个指向保存地址大小的 socklen_t 的指针。

所以应该是:

socklen_t client_addr_len = sizeof client_addr;
int len = recvfrom(....., (struct sockaddr*)&client_addr, &client_addr_len);

调用recvfrom后,client_addr_len将保存实际的地址长度(理论上,如果不是AF_INET地址,它可能小于缓冲区)。

关于c - recvfrom() 总是返回零远程地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37286124/

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