发送端
MulticastSocket s ;
Message m = new Message();
if (m != null) {
    try {
         ByteArrayOutputStream byteStream = new ByteArrayOutputStream(5000);
ObjectOutputStream os = new ObjectOutputStream(new BufferedOutputStream(byteStream));
os.writeObject(m);
os.flush();
         byte[] sendBuf = byteStream.toByteArray();
os.close(); DatagramPacket data = new DatagramPacket(sendBuf,sendBuf.length, group, 6789);
s.send(data);接收端
                  buf = new byte[100];
DatagramPacket recv = new DatagramPacket(buf, buf.length);
try {
while (true) {
s.receive(recv);
str = new String(recv.getData()).trim();
System.out.println(str);
//           System.out.println("2222222222");
// System.out.println(str);
Message m =new Message();
try {

ByteArrayInputStream byteStream = new ByteArrayInputStream(buf);
ObjectInputStream os = new ObjectInputStream(
byteStream);
System.out.println("1111111111111");
m = (Message)os.readObject();
System.out.println("3333333333");
m.Message();
m.putOut();


byteStream.close();
os.close();
m.putOut();


} catch (ClassNotFoundException e) {
System.out.println(e.getStackTrace());
System.out.println("Error loading file:");
System.out.println(e.getMessage());
}接收端 反序列化中有错误,我测试的是 m = (Message)os.readObject();执行不下去了,到底是为什么?

解决方案 »

  1.   

    http://blog.csdn.net/preferme/archive/2010/06/12/5667002.aspx
      

  2.   

    我想传送的是叫Message的对象,要用到序列化和反序列化的,我的传送过程中不知道有什么错误。
      

  3.   

    接收端
      buf = new byte[5000];
    DatagramPacket recv = new DatagramPacket(buf, buf.length);
    try {
    while (true) {
    s.receive(recv);
    Message m =new Message();
    try {
    ByteArrayInputStream byteStream = new ByteArrayInputStream(recv.getData());
    ObjectInputStream os = new ObjectInputStream(byteStream);
    System.out.println("1111111111111");
    m = (Message)os.readObject();
    System.out.println("3333333333");
    m.Message();
    m.putOut();
    byteStream.close();
    os.close();
    m.putOut();
    } catch (ClassNotFoundException e) {
    System.out.println(e.getStackTrace());
    System.out.println("Error loading file:");
    System.out.println(e.getMessage());
    }