问题:客户端发送数据到主机,主机可以接收,但是打印客户端 IP 和 端口 无效,全为 0
解决方法:传入 recvfrom 的最后一个参数有误,不能随便传入一个大小,需要按照指定的形式传入
问题代码:
recv_length = recvfrom(eth_info.sock, recv_buf,sizeof(recv_buf), 0,(struct sockaddr*)&recv_sockaddr,sizeof(struct sockaddr));
问题代码执行结果:
Client ip : 0.0.0.0
Client port : 0
更改后:
socklen_t sockaddrlen;
sockaddrlen = sizeof(struct sockaddr);
recv_length = recvfrom(eth_info.sock, recv_buf,sizeof(recv_buf), 0,(struct sockaddr *)&recv_sockaddr,&sockaddrlen);
更改后运行结果:
Client ip : 169.254.228.110
Client port : 1510
可正常获取IP,和端口。