socket接收消息 字符串长度

时间:2024-04-09 13:34:48

今天调试的时候,遇到一个奇怪的问题。

windows桌面软件是采用c#语言编写的,Android app是采用java编写的。两者之间采用socket方式通讯,因为字段比较多,所以先将字段内容拼接成json格式,再作为一个string一次性发送出去。

Android连接桌面软件后,由桌面软件发送一个json字符串给Android。

桌面软件上debug是正常的,但是Android上json解码的时候,总是报错。调试了一下,发现:在有效字符串后面增加了很多特殊字符:�����������������

 

socket接收消息 字符串长度

 

问题就出在这里:

socket客户端接收消息的时候,使用一个8*1024的buffer,在接收到消息之后,是将整个buffer的内容都转成string,而末尾那些为接收的字节是乱码的。实际上,我们只需要将有效字节转为string即可,增加一个字段:actuallyRead用来记录有效字节。