论坛首页 Java企业应用论坛

关于java UDP通讯 分包

浏览 2066 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-01-23  
本人最近在弄一个UDP通讯项目,有两个问题想问一下大家:
1、为什么UPD通讯一般才用16进制;——解决乱码?
2、当数据大于512byte时,如何分包呀;——用读取流的方式吗,最好能给出示例代码,谢了!


数据我本打算都有用String形式,但是后来看贴子有人说,String转byte后,再转String有出错,先转成16进制就没有出错了。

第二个,分包问题,在INTERNET上路由的包一般为520byte,去掉8byte的包头,还有512byte,如何将超过512byte的String拆分成多个512大小的byte,不敢下手了,项目都停了有半个月了……急啊!

各位高手,小鸟先谢了!
   发表时间:2013-01-25  
基本core java没学过?
0 请登录后投票
   发表时间:2013-01-29  
String转换成byte是不会有问题的,问题出现在没有限定字符集,
String.getByte() 方法采用的当前服务器系统的默认字符集,同理,new String(byte[])也是一样的,如果服务端与客户端的默认字符集不一致,肯定会导致String出现乱码的情况.

将String转换为byte组之后,进行切分时很容易的。
另外也不能简单的将取512长度,出现这种情况可能是需要进行数据封装的,例如分包的数据顺序(UDP请求无序),还有是否已经包含完成的数据等等.
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics