while(1)
{
recvfrom(sockfd, readbuff, maxlen - 1, 0, (struct sockaddr *)&add_peer, &len);
src_port=ntohs(addr_peer.sin_port);
}
src_ip=inet_ntoa(addr_peer.sin_addr);
这个函数, 第一次接收数据 src_port和src_ip输出总是0和0.0.0.0,但后面打印就正确了;
网上查找 发现是因为len没有初始化或者习惯性初始化为0了。
因此在recvfrom之前加一句: len = sizeof(struct sockaddr);
就OK了!!!