当前位置:编程学习 > JAVA >>

socket 收发数据问题(请各位大虾看详细描述)

问题是这样的: 
我在socket的server端,通过write()和flush()方法,向socket的client发送数据。
有一天我忽然发现,我明明通过server向client发了两批数据,但是client却只收到了一批数据,经过检查发现,数据没有丢失,都收到了,但是socket居然自作主张把两批数据混合为一批数据发给client了。 

请问这个问题有没有办法解决?谢谢! --------------------编程问答-------------------- 当然是这样的

除非你client收到并回复才算一次消息的发送和接收 --------------------编程问答-------------------- 发送数据用的是new BufferedOutputStream(this.client.getOutputStream()); 
然后使用BufferedOutputStream的write和flush方法 --------------------编程问答-------------------- 对于1楼,可能我没太讲清楚。
现在client可以收到数据,也可以回复数据,问题在于,因为太过socket发了2批数据,儿client只收到了1批(虽然,这1批里面包含了我所有发送的2批数据,但这显然不是我想要的)我希望,socket的server发几批数据,client就收到几批数据 --------------------编程问答-------------------- 这样有点难了

要不你用线程控制1下,隔1秒或者是几秒发一次试一下 --------------------编程问答-------------------- 隔1后再发送,这个办法是可以的,我之前试过了。
不过我觉得这没从根儿上把问题解决了。 --------------------编程问答-------------------- 反正你连续发的话,协议一定会把它当作是一个数据包

这个是不争的事实,我建议你换个方案吧 --------------------编程问答-------------------- LZ自己没有规定好通信协议,像这样的通信,是要自己定义规则的,比如定义消息头,消息体,消息尾,等等,然后接收端受到以后去解析
补充:Java ,  Web 开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,