永发信息网

请教一个利用java中socket字节流进行收发时遇到的问题

答案:2  悬赏:0  手机版
解决时间 2021-12-16 15:36
  • 提问者网友:甜吻
  • 2021-12-15 16:32
请教一个利用java中socket字节流进行收发时遇到的问题
最佳答案
  • 五星知识达人网友:薄荷加冰要多心凉
  • 2021-12-15 16:57
如果你发送一个长度11的字符串 而用一个长度为8的数组接收
第一次read没问题 但第二次read时因为只接受了3个字符 而数组长度却是8.结果就是除了前3个字符外剩下全部都是0 就出现了你的问题。

byte[] b = {0x11,0x22,0x33, 0x00, 0x00, 0x00, 0x00...}; -->length = 1024 后面都是0x00
就是因为只接受了前3个字符 后边数组实例的时候本身就是0
解决方法也比较容易
read(byte[] b)方法提供了一个返回的整数用来表示接受了多少个字符。
只要每次read时判断下看看返回的数值和数组长度大小。如果接收小于数组长度在处理处理数据时把多余的数据去掉。
全部回答
  • 1楼网友:预订下你
  • 2021-12-15 17:44
用substring截取字符串(10个字符)然后就用socket一个一个发呗,服务器受到了接上就行了 不过有一个问题,如果出现网络延迟,就有可能出现字符串 顺序颠倒的情况,最好建一个专门的类作为传送对象,这个类里的私有数据包括字符串数据,在总字符串中所处的位置等,然后调用socket的writeobject函数发送,传送过去后在强制转换 过来就行了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯