UDP协议发送对象
2014-05-14 19:49
155 查看
我们知道将对象序列化后,通过ObjectOutputStream和ObjectInputStream可以把对象写入文件或从文件中读取对象,最近遇到使用UDP协议发送对象的问题,下面说说UDP怎么发送对象。
UDP数据包DatagramPacker只能发送字节数组,那我们想办法把对象转化为字节数组,JAVA中的类ByteArrayInputStream和ByteArrayOutputStream与ObjectOutputStream和ObjectInputStream结合可以实现:
发送方:
public void send(Information info){
if(info == null) return;
DatagramSocket sendSocket = null;
ByteArrayOutputStream byteout = new ByteArrayOutputStream();//创建字节输出流
ObjectOutputStream oStream = null;
try {
sendSocket = new DatagramSocket();
oStream = new ObjectOutputStream(byteout);
oStream.writeObject(info.getInfoDataString());//将对象写入byte[]中
oStream.flush();
byte[] buf = byteout.toByteArray();
DatagramPacket datagramPacket = new DatagramPacket(buf,0,buf.length , info.getAddress().getDstIp(), info.getAddress().getPort());
sendSocket.send(datagramPacket);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
if(byteout!=null)byteout.close();
if(oStream!=null) oStream.close();
if(sendSocket!=null) sendSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
接收方:
byte[] buf = new byte[1024*64];
DatagramPacket receivePacket = new DatagramPacket(buf, buf.length);
receiveSocket.receive(receivePacket);
InetAddress hostInfo = receivePacket.getAddress();//发送方信息
//接收消息
bytein = new ByteArrayInputStream(receivePacket.getData());
inputStream = new ObjectInputStream(bytein);
TextAttribute textAttribute = (TextAttribute)inputStream.readObject();
UDP数据包DatagramPacker只能发送字节数组,那我们想办法把对象转化为字节数组,JAVA中的类ByteArrayInputStream和ByteArrayOutputStream与ObjectOutputStream和ObjectInputStream结合可以实现:
发送方:
public void send(Information info){
if(info == null) return;
DatagramSocket sendSocket = null;
ByteArrayOutputStream byteout = new ByteArrayOutputStream();//创建字节输出流
ObjectOutputStream oStream = null;
try {
sendSocket = new DatagramSocket();
oStream = new ObjectOutputStream(byteout);
oStream.writeObject(info.getInfoDataString());//将对象写入byte[]中
oStream.flush();
byte[] buf = byteout.toByteArray();
DatagramPacket datagramPacket = new DatagramPacket(buf,0,buf.length , info.getAddress().getDstIp(), info.getAddress().getPort());
sendSocket.send(datagramPacket);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
if(byteout!=null)byteout.close();
if(oStream!=null) oStream.close();
if(sendSocket!=null) sendSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
接收方:
byte[] buf = new byte[1024*64];
DatagramPacket receivePacket = new DatagramPacket(buf, buf.length);
receiveSocket.receive(receivePacket);
InetAddress hostInfo = receivePacket.getAddress();//发送方信息
//接收消息
bytein = new ByteArrayInputStream(receivePacket.getData());
inputStream = new ObjectInputStream(bytein);
TextAttribute textAttribute = (TextAttribute)inputStream.readObject();
相关文章推荐
- 使用UDP协议发送和接收数据
- linxu kernel version 1.0 TCP/IP 协议栈源代码分析1, UDP协议发送数据.
- linux下基于Qt的udp协议 pc机与Tiny210(arm板子)互相发送文字信息的实现 记录(1)
- TCP和UDP协议发送数据包的大小方面的知识介绍
- 使用UDP协议发送和接收数据
- UDP协议下内网与公网IP进行发送消息,一对多.且选择不同的客户端发送消息
- udp协议的数据接收与发送的代码
- TCP和UDP协议发送数据包的大小方面的知识介绍
- 关于Linux中TCP和UDP协议的发送和接收缓冲区
- linux网络协议栈(六)传输层 (3)UDP协议 3)报文发送 send/sendto/sendmsg
- 【原创】“小学生也能”之三,私有化PE包协议以及UDP包发送
- TCP和UDP 协议发送数据包的大小
- TCP和UDP 协议发送数据包的大小
- TCP 和 UDP 协议发送数据包的大小
- TCP和UDP 协议发送数据包的大小
- 使用UDP协议发送和接收数据
- Java UDP协议传对象
- java nio 值对象发送协议
- 黑马程序员--10.网络编程--03.【UDP协议相关类】【DatagramPacket类】【DatagramSocket类】【UDP发送端和接收端】
- udp协议的数据接收与发送的代码 分类: VC++ 网络基础 2014-02-25 08:15 700人阅读 评论(0) 收藏