当前位置: 技术问答>linux和unix
udp接收不到数据问题 急!!
来源: 互联网 发布时间:2016-03-11
本文导语: sockfd = socket(AF_INET,SOCK_DGRAM,0); localaddr.sin_family = AF_INET; localaddr.sin_port = htons(port); localaddr.sin_addr.s_addr = inet_addr("192.168.1.193");本机IP ret = bind(sockfd,(str...
sockfd = socket(AF_INET,SOCK_DGRAM,0);
localaddr.sin_family = AF_INET;
localaddr.sin_port = htons(port);
localaddr.sin_addr.s_addr = inet_addr("192.168.1.193");本机IP
ret = bind(sockfd,(struct sockaddr *)&localaddr,sizeof(localaddr));
ret = select(2,&_readfds,(fd_set *)0,(fd_set *)0,&timeout);
一直阻塞在这里了,我在本机作了一个客户端往它发数据可以接收,但另一个设备发的数据却没有反应.我用tcpdump查看了
本机数据通讯,已经接收到设备的数据包.难道是套接口不行,请大师们帮帮忙.
localaddr.sin_family = AF_INET;
localaddr.sin_port = htons(port);
localaddr.sin_addr.s_addr = inet_addr("192.168.1.193");本机IP
ret = bind(sockfd,(struct sockaddr *)&localaddr,sizeof(localaddr));
ret = select(2,&_readfds,(fd_set *)0,(fd_set *)0,&timeout);
一直阻塞在这里了,我在本机作了一个客户端往它发数据可以接收,但另一个设备发的数据却没有反应.我用tcpdump查看了
本机数据通讯,已经接收到设备的数据包.难道是套接口不行,请大师们帮帮忙.
|
看看防火墙关了没,在做TCP时遇到过,没关防火墙,改了N小时,日了,只要service tables stop通过
|
select的各个参数是什么值,为什么select第一个参数是2?sockfd一定小于2吗
怀疑是select的问题
换sendto和recvmsg测试一下client和server能否通信
怀疑是select的问题
换sendto和recvmsg测试一下client和server能否通信
|
ret = select(sockfd+1,&_readfds,(fd_set *)0,(fd_set *)0,&timeout);
|
不一定是一个完整的包,所以你要根据返回的接收字节数,进行判断啊。
|
不一定,UDP数据如果太大,系统会分开发,这时好象要加一些别的处理,象我在写TCP时在接收时加一个循环
直到接到所有的数据
直到接到所有的数据