困扰了三天的问题!!!关于TCP发送十六进制数据的!!!!在线等!!

再见五天 2015-01-07 10:33:12
我用android做TCP客户端,TCP/UDP调试工具做服务端,从服务端发送十六进制数据,android用DataInputStream.read(byte[])方法读取后数据就发生了改变。比如发送‘123456’,android解析出来就成了'1245',本来是3个字节的数据,android返回读取数据的长度却变成了2个字节,实在是不知道怎么回事!!代码如下:


InputStream in=client.getInputStream();
DataInputStream ins = new DataInputStream(in);
while (true) {
//content=new byte[1024];
if (!client.isClosed()) {
if (client.isConnected()) {
if (!client.isInputShutdown()) {
byte[] content=new byte[40];
while((a=ins.read(content)) !=-1) { //读取数据 ,存放到数组content中

Message msg=new Message();
msg.what=a;
msg.obj=content;
mHandler.sendMessage(msg);

}
}
}
}
}
}

...全文
391 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChangeZ_ 2015-01-09
  • 打赏
  • 举报
回复
你要先对比一下服务端发送的字节码和客户端接收到的字节码是否一致,感觉像是包头长度规则的原因。
冥王之锤 2015-01-08
  • 打赏
  • 举报
回复
先用wireshark抓包工具抓一下内容,看是发的问题,还是收的问题。要两台不同的机器抓。
致知Fighting 2015-01-08
  • 打赏
  • 举报
回复
ins.read(content)),执行完了之后把content里的东西拿出来和发送的东西一对比不就知道原因了?
再见五天 2015-01-07
  • 打赏
  • 举报
回复
太急了,发错区了,求大神啊!!

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧