使用ByteArrayOutputStream和ObjectOutputStream就可以实现要求。 具体参考代码: /* * ObjectStream.java * * Created on 2007年11月12日, 下午1:08 * * You can read and modify it but must make it run successfully */package org.tiger.io;import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress;/** * * @author pgj */ public class ObjectStream {
/** Creates a new instance of ObjectStream */ public ObjectStream() { } public static void main(String[] args) throws IOException { Person p = new Person("Pgj",14); ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(p); oos.flush();
//write byte[] b = bos.toByteArray(); DatagramPacket packet = new DatagramPacket(b,b.length,InetAddress.getByName("127.0.0.1"),8888); DatagramSocket socket = new DatagramSocket(); socket.send(packet); socket.close(); }
} /* * Person.java * * Created on 2007年11月12日, 下午1:32 * * You can read and modify it but must make it run successfully */package org.tiger.io;import java.io.Serializable;/** * * @author pgj */ public class Person implements Serializable{ private String name; private int age;
public String toString(){ return "name:" + name + ";age:" + age; } }
还有个测试代码: /* * ReciveStream.java * * Created on 2007年11月12日, 下午1:31 * * You can read and modify it but must make it run successfully */package org.tiger.io;import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException;/** * * @author pgj */ public class ReciveStream {
/** Creates a new instance of ReciveStream */ public ReciveStream() { } public static void main(String[] args) throws SocketException, IOException, ClassNotFoundException { DatagramSocket socket = new DatagramSocket(8888); byte[] buffer = new byte[4089]; DatagramPacket packet = new DatagramPacket(buffer,buffer.length); socket.receive(packet);
//read ByteArrayInputStream bis = new ByteArrayInputStream(packet.getData(),packet.getOffset(),packet.getLength()); ObjectInputStream ois = new ObjectInputStream(bis); Person p = (Person) ois.readObject(); System.out.println("Person:" + p);
具体参考代码:
/*
* ObjectStream.java
*
* Created on 2007年11月12日, 下午1:08
*
* You can read and modify it but must make it run successfully
*/package org.tiger.io;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;/**
*
* @author pgj
*/
public class ObjectStream {
/** Creates a new instance of ObjectStream */
public ObjectStream() {
}
public static void main(String[] args) throws IOException {
Person p = new Person("Pgj",14);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(p);
oos.flush();
//write
byte[] b = bos.toByteArray();
DatagramPacket packet = new DatagramPacket(b,b.length,InetAddress.getByName("127.0.0.1"),8888);
DatagramSocket socket = new DatagramSocket();
socket.send(packet);
socket.close();
}
}
/*
* Person.java
*
* Created on 2007年11月12日, 下午1:32
*
* You can read and modify it but must make it run successfully
*/package org.tiger.io;import java.io.Serializable;/**
*
* @author pgj
*/
public class Person implements Serializable{
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public String toString(){
return "name:" + name + ";age:" + age;
}
}
/*
* ReciveStream.java
*
* Created on 2007年11月12日, 下午1:31
*
* You can read and modify it but must make it run successfully
*/package org.tiger.io;import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;/**
*
* @author pgj
*/
public class ReciveStream {
/** Creates a new instance of ReciveStream */
public ReciveStream() {
}
public static void main(String[] args) throws SocketException, IOException, ClassNotFoundException {
DatagramSocket socket = new DatagramSocket(8888);
byte[] buffer = new byte[4089];
DatagramPacket packet = new DatagramPacket(buffer,buffer.length);
socket.receive(packet);
//read
ByteArrayInputStream bis = new ByteArrayInputStream(packet.getData(),packet.getOffset(),packet.getLength());
ObjectInputStream ois = new ObjectInputStream(bis);
Person p = (Person) ois.readObject();
System.out.println("Person:" + p);
}
}