在socket编程里面,如何构造、发送和接收一个包?

lihuabo 2005-03-15 10:01:48
收发包在c里面一般用到结构和联合的方法。
比如
typedef struct{
char type;
int len;
char data[1000];
} PDU
PDU pdu1;
然后填充pdu1的数据,接着发送:
status = send(sockfd,(char *)&pdu1,length,0);


我想知道java是如何完成这个过程的?
...全文
137 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihuabo 2005-03-23
  • 打赏
  • 举报
回复
有人回应吗?为什么我在客户端用ObjectInputStream和ObjectOutputStream来打开读写流,就是和服务器端连不上?
lihuabo 2005-03-21
  • 打赏
  • 举报
回复
为什么在客户端我用ObjectOutputStream来尝试连接就是不成功呢?
皮鲁 2005-03-19
  • 打赏
  • 举报
回复
用字节流来写就可以了
kingfish 2005-03-15
  • 打赏
  • 举报
回复
(考虑结构1字节对齐,int为4字节) 你的结构的sizeof(PDU)为1005
java端收1005个byte再解析就可以.
lihuabo 2005-03-15
  • 打赏
  • 举报
回复
哦.好的.谢谢.我去试试!
GJA106 2005-03-15
  • 打赏
  • 举报
回复
java中可以通过类来解决这个问题。c/c++中的结构和联合,java通过类来反应出来(可以自己建类,也可以利用sun提供的集合类--HashMap/ArrayList/...)。
try{
//创建套接字通道输出流
DataOutputStream mdos = new DataOutputStream(mSocket.getOutputStream());
//创建套接字通道对象输入流
ObjectOutputStream moos = new ObjectOutputStream(mdos);
//可以是自己创建的类,必需实现序列化
Vector mVectorFileInfo = new Vector(2);
mdos.writeLong(2l);
mVectorFileInfo.add("测试数据信息");
mVectorFileInfo.add(new byte[2]);
moos.writeObject(mVectorFileInfo);//发送对象
moos.flush();
mdos.flush();
mVectorFileInfo.clear();
mVectorFileInfo = null;
}catch(Exception eIOe){
}

62,612

社区成员

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

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