socket+Protocol buffer 错误

原创 2015年07月09日 11:49:30

通过socket不断接收计算结果数据,接收到数据后利用protocol buffer 进行反序列化会出错,错误指向如下图:


是由于socket发送数据时 是一次发送完,但是接收数据会存在分批次接收的原因。程序是设置为一次接收完毕,但是实际情况是socket会分批次接收数据,导致误以为未接收完的部分为新的一帧结果,从而出现数据的错乱。

解决代码(摘自论坛):

              intnCount =...; // 总的字节数

                     charbuf[1024] = ...; // 每次发送1024个字节的内容

                     while(nCount)

                     {

                       sprint(buf,"%s", ...);

                            nRet = send(..., buf, strlen(buf)+1);

                            if(SOCKET_ERROR == nRet)

                            {

                                   break; // Error

                            }

                            nCout -= nRet;

                     }

通过判断接收到的数据量是否为发送来的数据量来判断是否接受完一次的结果。

信息传递不全的问题strcpy值复制22个字符

在用PB进行序列化后数据丢失的,如下所示

原因是0是NULL值,给其赋一个有效值(例如-999)就好了,在反序列化后再将这些值赋值为NULL.



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

google protocol buffer协议的socket通信实例

package lm; message helloworld  {  required int32 id = 1; // ID required string str = 2; // ...

C#使用Protocol Buffer(ProtoBuf)进行Unity中的Socket通信

这篇文章主要介绍了C#使用Protocol Buffer(ProtoBuf)进行Unity的Socket通信的实例,Protocol Buffer是Google开发的数据格式,也是除了XML和JSON...

unity 可用的protocol buffer

  • 2015-12-31 00:31
  • 5.07MB
  • 下载

protocol buffer

  • 2015-03-13 15:34
  • 1018KB
  • 下载

Protocol buffer配置-生成jar包和java文件

Protocol Buffer是谷歌开源的一种序列化和反序列化机制,类似于XML,JSON 解析,但是Protocol Buffer 更灵活、更高效、更简单。     具体在实际开发中,Protoc...

在python中使用google protocol buffer

今天想要写个python脚本来把我们之前一个项目中使用的gpb格式导出的数据打印出来,由于之前接触python很少,所以基本是从头学起 基本的语法的话我就不说了,我主要记录一下我的几个环境配置 p...
  • kerlw
  • kerlw
  • 2011-05-20 12:36
  • 3354
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)