UDP编程问题? 本帖最后由 VisualEleven 于 2011-05-04 13:34:22 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 但是,有可能出现下面的情况:c接收a发送过来的数据,存入到了bufRcvOBU中,然后处理数据,当数据还没有处理完的时候,c又接收到了b发送过来的数据,这时候如果存入bufRcvOBU的话,会出现错误吧 我用10台机器同时向一台机器发数据,接收都是正常的。发送频率为每100ms一次,一次发送4096字节。10台机器加起来相当于每10ms发送4096字节。接收端很正常,没有掉帧,没有串数据!不知楼主为啥有这样的情况? byte* bufRcvOBU = new byte[1024];recvfrom(sockSrv,(char *)bufRcvOBU,1024,0,(SOCKADDR*)&addrClient,&len)run a thread to process and free the buffer 我启动了一个线程专门接收,接收部分的代码如下while(TRUE) { //bufRcv是1024大小的char数组 n=recvfrom(sockSrv,(char *)bufRcv,1024,0,(SOCKADDR*)&addrClient,&len); //接收正确,解析 if (n != SOCKET_ERROR) { DataResolvingFromOBU(); } }如果都向一个机器发送的时候,在解析bufRcv的过程中可能又接收到了数据,把上次接收的bufRcv的数据给冲掉了 你接收到数据后,把bufRcv中的数据插入链表处理的时候直接从链表读出并处理这样就不存在覆盖的问题啦 用EnumServicesStatus枚举服务 修改窗口标题的问题 MFC程序运行时间的测定(急) CListCtrl 滚动条问题 如何二进制文件转化为文本文件 用sscanf()函数分割字符串为何错?我的代码是。。 求助:vc++,ado,如何判断连接是否丢失? 串口操作在98和2000下有什么区别? 急,急 !急, 关于vc写的dll在pb下的调用的问题 请高手解决! 给分啦100 如何防止别人调用DLL中的函数 为什么 这个类成员变量报这个错呢??? 真是让人崩溃了
c接收a发送过来的数据,存入到了bufRcvOBU中,然后处理数据,当数据还没有处理完的时候,c又接收到了b发送过来的数据,这时候如果存入bufRcvOBU的话,会出现错误吧
发送频率为每100ms一次,一次发送4096字节。
10台机器加起来相当于每10ms发送4096字节。
接收端很正常,没有掉帧,没有串数据!不知楼主为啥有这样的情况?
recvfrom(sockSrv,(char *)bufRcvOBU,1024,0,(SOCKADDR*)&addrClient,&len)run a thread to process and free the buffer
我启动了一个线程专门接收,接收部分的代码如下
while(TRUE)
{
//bufRcv是1024大小的char数组
n=recvfrom(sockSrv,(char *)bufRcv,1024,0,(SOCKADDR*)&addrClient,&len);
//接收正确,解析
if (n != SOCKET_ERROR)
{
DataResolvingFromOBU();
}
}如果都向一个机器发送的时候,在解析bufRcv的过程中可能又接收到了数据,把上次接收的bufRcv的数据给冲掉了
你接收到数据后,把bufRcv中的数据插入链表
处理的时候直接从链表读出并处理
这样就不存在覆盖的问题啦