【发布时间】:2014-03-17 15:44:46
【问题描述】:
各位,
我被这个问题困扰了很长时间,请帮助!我在一台笔记本电脑上有服务器,它正在向另一台笔记本电脑上的客户端发送数据,相同的局域网。我可以在服务器端和客户端的wireshark上看到udp数据包......但问题出在代码中,客户端只是卡在“ printf(“Opening datagram socket ....OK.\n”); "为什么代码不能 printf 从服务器接收到 buf?正如我所说,数据包在wireshark中可见,这让我感到困惑:S
请给点建议...
int main(){
struct sockaddr_in srv_addr;
int sd,fd,datalen,numRead;
ssize_t nbytes,numWrite;
socklen_t addrlen=sizeof(struct sockaddr_in);
char buf[MAX_SIZE],tmp[MAX_SIZE];
if((sd = socket(AF_INET, SOCK_DGRAM, 0))<0){
printf("Opening datagram socket error",strerror(errno));
return 1;
}else{
printf("Opening datagram socket....OK.\n");
}
memset((char *) &srv_addr, 0, sizeof(srv_addr));
srv_addr.sin_family = AF_INET;
srv_addr.sin_port = htons(PORT_NUM);
srv_addr.sin_addr.s_addr = inet_addr(IP_SERVER);
memset(buf,0,MAX_SIZE);
while(1){
nbytes = recvfrom(sd,buf,MAX_SIZE,0,(struct sockaddr *)&srv_addr, &addrlen);
if(nbytes != -1){
printf("The %s message from server\n",buf);
}else{
printf("Recvfrom error %s\n",strerror(errno));
}
return 0;
}
【问题讨论】:
-
您的代码缺少右大括号 (
})。