永发信息网

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

答案:2  悬赏:0  手机版
解决时间 2021-12-16 15:36
请教一个利用java中socket字节流进行收发时遇到的问题
最佳答案
如果你发送一个长度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时判断下看看返回的数值和数组长度大小。如果接收小于数组长度在处理处理数据时把多余的数据去掉。
全部回答
用substring截取字符串(10个字符)然后就用socket一个一个发呗,服务器受到了接上就行了 不过有一个问题,如果出现网络延迟,就有可能出现字符串 顺序颠倒的情况,最好建一个专门的类作为传送对象,这个类里的私有数据包括字符串数据,在总字符串中所处的位置等,然后调用socket的writeobject函数发送,传送过去后在强制转换 过来就行了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
远程控制电表电业局有停电记录吗
singleleverbasinmixer是什么意思
我是一名女生学的是高分子材料与工程想从事化
长沙市“幸福的味道”紫苏桃子姜的地址
南极阅读题答案
在么前辈,我想问下现在的地铁线路维修工的待
SONY摄录一体机HDR-XR550E的数据线可以单配吗
2016年,浙江宁波生二胎!男性的陪产假有多久
二婚夫妻,婚后买房写的是男方子女名字,女方
情侣之间吵架后,男孩儿对女孩儿说:“你和布
38度15分和38度.15度相等吗?如不想等,哪一
华为荣耀6P里的天际通有什么用
百度HI一台电脑能登录几个HI?
我的车一年了没有报过保险第二年是怎么优惠的
四年级期未考试作文:从《诚实的樵夫》想到的
推荐资讯
600000秒等于多少小时
一个已婚男人告诉女人怕你分心,伤害到家庭是
岑港边防派出所在什么地方啊,我要处理点事
在合同中约定到期不支付房款用债务人的房子冲
霍城海关在什么地方啊,我要处理点事
苹果手机连不上Wi-Fi,显示无法加入网络
干到印刷机长想转型做什么工作好?
我想问:手机怎么快速换ip地址?
坑口派出所位置在什么地方啊,我要过去办理业
华晨宇是干嘛的?
为啥啥我在高速上看开的最慢出事最多的就是大
我圆的扁的你都不知道呢,!是啥意思?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?