java IO问题

challchampion 2011-11-09 02:25:32
想发送一个udp的报文,这样的结构
struct{
int type;
int version;
char name[20];
}。怎样发送最后那20个字符呀?我这样写的对吗
ByteArrayOutputStream baos = new ByteArrayOutputStream(1024);
DataOutputStream dos = new DataOutputStream(baos);
try {
dos.writeInt(ProtocolConst.ConnectMessage);
dos.writeInt(version);
dos.writeBytes(name);
dos.close();
baos.close();
} catch (IOException e) {
e.printStackTrace();
}

发送的是baos.toByteArray(),那20个字符不会每次都填满。在server端的接收这样写的

rcvByte = new byte[2048];
sPacket = new DatagramPacket(rcvByte, rcvByte.length);
ByteArrayInputStream bais = new ByteArrayInputStream(rcvByte, 0, sPacket.getLength());
DataInputStream dis = new DataInputStream(bais);
Log.d(TAG, "type: " + dis.readInt());
Log.d(TAG, "version: " + dis.readInt());
byte[] buf = new byte[1024];
dis.read(buf, 0, 1024);
Log.d(TAG, "name: " + buf.toString());

最后打印出来的name是乱码,请问要怎么处理呢?
...全文
103 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
beiouwolf 2011-11-10
  • 打赏
  • 举报
回复
报文如果你没有前置字段来指定字长的话
那你就应该对每个可变字符串进行填充
一般来说是以双方协商,填充字符空格比较多
可以协商好是前置空格还是后置空格,反正就是想办法把char(20)填满,不要留空
kouyiSC 2011-11-10
  • 打赏
  • 举报
回复
服务器和客户端 在发送和接受的时候编码方式设置一下。。。
阳明 to life 2011-11-10
  • 打赏
  • 举报
回复
发xml
challchampion 2011-11-09
  • 打赏
  • 举报
回复
java是做客户端,我现在也做了一个 java的服务器用来测试。主要是这种c++的数组char name[20]如何发送呢

[Quote=引用 5 楼 beefcattlexiaoyang 的回复:]

估计你要对这个byte进行处理一下,

Java和C++进行通信的话,不知道你Java这端是做的什么,如果是服务器的话

Java code

DataOutputStream dos = new DataOutputStream(baos);
try {
dos.writeInt(ProtocolConst.ConnectMessage);
……
[/Quote]
大_爱 2011-11-09
  • 打赏
  • 举报
回复
估计你要对这个byte进行处理一下,

Java和C++进行通信的话,不知道你Java这端是做的什么,如果是服务器的话


DataOutputStream dos = new DataOutputStream(baos);
try {
dos.writeInt(ProtocolConst.ConnectMessage);
dos.writeInt(version);
dos.writeBytes(name);
dos.close();
baos.close();
dos.flus();


强制清空缓冲一下嘛,

C++中的我也不懂。
challchampion 2011-11-09
  • 打赏
  • 举报
回复
不好意思,表达的不好,简单说就是java与c++的udp通信,发送一个这样的数组,需要怎么处理?此外,接收这样的数组时要如何处理呢?
struct{
int type;
int version;
char name[20];
}

[Quote=引用 3 楼 beefcattlexiaoyang 的回复:]

不懂!
[/Quote]
大_爱 2011-11-09
  • 打赏
  • 举报
回复
不懂!

62,614

社区成员

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

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