我有一个client.c
server.c
在Linux上。 两个我初始化一个插座:
sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
在服务器中我补充:
listen_addr.sin_family = AF_INET;
listen_addr.sin_port = htons(port);
listen_adrr.sin_addr.s_addr = htonl(INADDR_ANY);
在server.c
电话(阻塞方式),以recvform
:
if (recvfrom(sockfd, buf_get, BUFLEN, 0, (struct sockaddr*)&talker_addr, &slen) == -1)
err("recvfrom()");
而client.c
发送报文:
if (sendto(sockfd, buf_sent, BUFLEN, 0, (struct sockaddr*)&serv_addr, slen) == -1)
err("sendto()");
- 问题是,在第一通话到
sendto
从client.c
,服务器认为客户端的IP为0.0.0.0
,之后在第二,第三,......会调用client.c
获取IP,并有一个合法的IP如127.0.0.3:3212
。 - 另一个奇怪的是,如果我开始第二个新的客户端它获取IP从第一次。