【发布时间】:2016-05-17 20:57:56
【问题描述】:
我正在编写一个简单的 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
【问题讨论】:
-
最后一个参数应该是一个指针。它是否还返回 -1 并将 errno 设置为 EFAULT,是否有任何机会?
-
它返回-1,错误信息是:Bad address
-
该代码甚至不应该编译。您是否在许可模式下编译?你不应该!
-
它返回-1,错误信息是:Bad address 这就是为什么你总是检查返回码。
标签: c sockets unix udp datagram