socket接收消息 字符串长度
生活随笔
收集整理的這篇文章主要介紹了
socket接收消息 字符串长度
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天調試的時候,遇到一個奇怪的問題。
windows桌面軟件是采用c#語言編寫的,Android app是采用java編寫的。兩者之間采用socket方式通訊,因為字段比較多,所以先將字段內容拼接成json格式,再作為一個string一次性發送出去。
Android連接桌面軟件后,由桌面軟件發送一個json字符串給Android。
桌面軟件上debug是正常的,但是Android上json解碼的時候,總是報錯。調試了一下,發現:在有效字符串后面增加了很多特殊字符:�����������������
?
?
問題就出在這里:
socket客戶端接收消息的時候,使用一個8*1024的buffer,在接收到消息之后,是將整個buffer的內容都轉成string,而末尾那些為接收的字節是亂碼的。實際上,我們只需要將有效字節轉為string即可,增加一個字段:actuallyRead用來記錄有效字節。
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的socket接收消息 字符串长度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java小程序:单循环比赛,总分高者获胜
- 下一篇: 阿里面试其实也没想象中的那么难,秋招提前