首页 文章

tcp接收数据坏了

提问于
浏览
0

情况是:我用Java编写的TCP服务器是c,TCP客户端(android app),使用google protobuf序列化/反序列化;和服务器每秒向客户端发送数据以显示 . 数据包含(对于简单)attribute1 / attribute2 / attribute3,客户端需要使用attribute1 / attribute2 / attribute3显示确切的数据 . 数据大小超过1480字节,每秒都有变化 .

问题是:TCP客户端无法获得偶尔显示的确切数据;例如,attribute3是一个字符串,比如说“2018-12-10 12:00:00”,但TCP客户端只显示“2018-12-” .

尝试过:tcp服务器和客户端无法承诺数据大小,因为来自服务器的数据每秒都在变化;并且它似乎没有通过谷歌protobuf提供消息的长度 . 那么tcp客户端如何才能获得准确显示的数据?谢谢你的帮助!

1 回答

  • 1

    您需要决定要在TCP连接上使用的消息格式,并在代码中实现该消息格式 . TCP不是消息协议,协议缓冲区产生消息 .

    常见的技术是在每个消息前面加上一个四字节整数,以网络字节顺序指示消息的大小 . 接收器然后可以读取这四个字节并知道协议缓冲器消息有多少字节 .

    有关更多信息,请参阅here .

相关问题