当我recvfrom() 时,收到的消息是正确的,但源地址完全是一团糟,为什么会这样?
char traid_messageR[MAXDATASIZE];
socklen_t addlen;
struct sockaddr_in source_addr;
if((numbytes=recvfrom(udp_sockfd, traid_messageR, 256, 0, (struct sockaddr*)&source_addr, &addlen)) == -1)
{
perror("recvfrom");
exit(1);
}
结果是这样的:
(gdb) print source_addr
$1 = {sin_family = 61428, sin_port = 42, sin_addr = {s_addr = 49809},
sin_zero = "\234\352\377\277\310\352\377\277"}
49809 看起来像一个端口号,但它是此接收器的端口号...有人知道这是为什么吗?非常感谢哦,另一件事,我在 select() 循环中使用了它,IF_ISSET(und_socked ,%fds),然后执行上面的代码,有影响吗?