我是向两个不同的机器发送相同的UDP包,代码如下for (i=0; i<Num; i++)::sendto(RemoteNode[i].hSocket,(char*) pSendBuf,ulSendLength,0,(struct sockaddr*) &RemoteNode[i].stLclAddr,sizeof(RemoteNode[i].stLclAddr));但是发送几万帧以后发现,有几帧数据第一个目的机器没有发送出去,而第二个目的机器却发送出去了。是因为两个sendto语句之间间隔太短吗?那为什么只有偶尔几帧才出现这种情况?还有,进行相同试验时,发现未发送出去的帧基本是同一帧,这一帧与上一帧的发送间隔通常较大,100多秒以上,而相差几百毫秒的帧却两个机器都能收到,难道UDP也有断开连接这一说?
2 回答
森栏
TA贡献1810条经验 获得超5个赞
这个源码有个错误,是这个地方 char *buff[256];是256个指针,每个指针大小为4个字节,并且指向位置不确定,buff就是指向指针的指针,而不是指向空间的。应该为char buff[256];是256个字符空间 buff就是空间的首地址,也就指针,如果不改的话Receive( buff,256);就出错了。
=(struct MEG*)buff;
就是强制类型转换,将MEG指针 指向了 buff位置,利用MEG结构分组buff指向的内容。虽然buff是256但MEG大小之外的通过MEG指针访问不到。
添加回答
举报
0/150
提交
取消