关于Java的Socket编程传输的

是这样的~~我写了个通讯程序用Socket前面建立一个线程用UTF接受发发送的改变模式(启动游戏)后面又建立一个线程用Byte[]接收和发送PS:其实后面的游戏开始后想用... 是这样的~~

我写了个通讯程序 用Socket
前面建立一个线程用UTF接受发发送的

改变模式(启动游戏)

后面又建立一个线程用Byte[]接收和发送

PS:
其实后面的游戏开始后想用类来传送数据,放在Object那个流过去的,但是总是死锁什么的,
就用ArrayBuffnage流和 Object流转换一下转换成byte 再传输
测试转换过程没问题
但是接收到的数据再转化回Object的时候总是报错,一查是接收的和发送的不一样,开头少了.
以为是原来的UTF在阻塞,是不是被UTF的接收了一部分导致不全而出错了,在前面加了一个发送UTF的解除那个阻塞.发现还是不行

大神给解释下 我要怎么做.难道后面我要用处理字符串的方式读数据啊
展开
 我来答
收集板
2012-07-24 · TA获得超过402个赞
知道小有建树答主
回答量:382
采纳率:0%
帮助的人:223万
展开全部
UTP吧UTF。。。。
说了半天不知道你在问什么
追问
就是刚开始用的是UTP(也就是readUTF,writeUTF),然后后面因为是游戏中传输数据(前面是聊天界面)想改成readObject(也就是序列化类的方法传输数据),因为Objectstream那个流容易锁死,我就用的内存流转换成byte数组流了,传过去发现总是对不上......

我想问这个怎么办.

问题是不是因为前面那个readUTF堵塞,然后发的byte被他接了一部分还是什么 的....很纠结~~
追答
前后太台json吧。其实要说正规做法,传输的数据要经过编码才行的。
网络中socket传输尤其是udp,1是丢包,2是数据接收等待接收完成验证一下数据完整性。
你传输的package最好经过编码传输。比如用base64。数据包头,尾要做验证。
保证数据完整性,又保证数据传输协议,那么数据肯定是没问题的。

就算你不编码,起码一个数据包完整得验证一下吧?你说呢。我玩java很短时间,但是汇编,VC这块做socket做过一段时间,大体上是这样的,欢迎继续追问。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式