UDP传接序列化对象

UDP传递序列化对象

写了一个UDP传递对象的简单例子

 

服务端:

 

package com.udp;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UDPServer {
	public static void main(String[] args) throws IOException {
		DatagramSocket ds = new DatagramSocket(8081);
		byte[] buf = new byte[1024];
		DatagramPacket dp = new DatagramPacket(buf, buf.length);
		while (true) {
			System.out.println("for receive....");
			ds.receive(dp);
			Student s = (Student)b2o(dp.getData());
			System.out.println(s.name);
		}

	}

	public static Object b2o(byte[] buffer) {
		Object obj = null;
		try {
			ByteArrayInputStream buffers = new ByteArrayInputStream(buffer);
			ObjectInputStream in = new ObjectInputStream(buffers);
			obj = in.readObject();
			in.close();
		} catch (Exception e) {
			System.out.println("error");
		}
		return obj;
	}
}

 

客户端:

package com.udp;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;

public class UDPClient {
	public static void main(String[] args) throws IOException {
		InetSocketAddress isa = new InetSocketAddress(InetAddress
				.getByName("192.168.1.102"), 8081);
		DatagramSocket ds = new DatagramSocket();
		Student student = new Student();
		student.name = "denghong";
		DatagramPacket dp = new DatagramPacket(o2b(student), o2b(student).length, isa);
		ds.send(dp);
	}

	public static byte[] o2b(Student s) {
		ByteArrayOutputStream buffers = new ByteArrayOutputStream();
		try {
			ObjectOutputStream out = new ObjectOutputStream(buffers);
			out.writeObject(s);
			out.close();
		} catch (Exception e) {
			System.out.println("error");
			return null;
		}
		return buffers.toByteArray();
	}

}

 

序列化对象

package com.udp;

import java.io.Serializable;

public class Student implements Serializable{
	
	private static final long serialVersionUID = -5971668520303705956L;
	public String name;
	
}