我在局域网中有两台机器 A 和 B 我在 A 上有一个 UDP 客户端,在 B 上有一个 UDP 服务器,比如
for(;;){
n = recvfrom(sockfd, mesg, 10000, 0, (struct sockaddr *)&cliaddr, &len);
....}
我注意到当 UDP 客户端发送第一个数据报时
,我可以mesg
正确获取数据报数据有效负载,
但结构cliaddr
未填充,它是原始值
,例如,如果我使用bzero(&cliaddr, sizeof(cliaddr));
,
in gdb
,我得到
$1 = {sin_family = 0, sin_port = 0, sin_addr = {s_addr = 0}, sin_zero =
"\000\000\000\000\000\000\000"}
收到第一个数据报时,recvfrom() 没有填充结构的原因是cliaddr
什么?
对于后续的数据报,可以获得有效的信息。