User

package com.imooc.UTPReturn;

import java.io.Serializable;

public class User implements Serializable{

private String username;

private String password;

public User(String username, String password) {

this.username = username;
this.password = password;
}

@Override
public String toString() {
return "User [username=" + username + ", password=" + password + "]";
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}



}

Server

package com.imooc.UTPReturn;

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

public class UTPServer {

public static void main(String[] args) throws Exception {

/*
* 服务器端接收客户端的请求
*/
// 创建服务器端DatagramSocket
DatagramSocket socket = new DatagramSocket(8800);

// 创建数据包
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length);

// 服务器端已经启动...
System.out.println("服务器端已经 启动....");
socket.receive(packet);// 接收数据

// 读取客户端发来的数据
// String str=new String(data, 0, packet.getLength());
// System.out.println("我是服务器,客户端说:"+str);

// bytearray to object
ByteArrayInputStream bi = new ByteArrayInputStream(data);
ObjectInputStream oi = new ObjectInputStream(bi);

User user = (User)oi.readObject();
bi.close();
oi.close();
System.out.println(user.toString());



/*
* 服务器端回应客户端
*/
// 给客户端发出响应
byte[] responseData = null;
responseData = "欢迎你".getBytes();
InetAddress address = packet.getAddress();
int port = packet.getPort();

DatagramPacket responsePacket = new DatagramPacket(responseData,
responseData.length, address, port);

socket.send(responsePacket);

// 关闭资源
socket.close();
}

}

Client

package com.imooc.UTPReturn;

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

public class UTPClient {

public static void main(String[] args) throws Exception {
/*
* 客户端向服务器端发送数据
*/
// 定义数据报的地址,端口,数据
InetAddress address = InetAddress.getByName("localhost");
int port = 8800;
// 定义数据报的内容
// byte[] data="用户名admin,密码123".getBytes();
User user = new User("张三", "123");
byte[] data = null;


// object to bytearray
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream oo = new ObjectOutputStream(bo);
oo.writeObject(user);
data = bo.toByteArray();

bo.close();
oo.close();
// 创建数据报
DatagramPacket packet = new DatagramPacket(data, data.length, address,
port);

// 创建DatagramSocket对象
DatagramSocket socket = new DatagramSocket();

// 发送数据报
socket.send(packet);

/*
* 客户端接收服务器端的回应
*/
socket.receive(packet);

String responseStr = new String(data, 0, packet.getLength());
System.out.println("我是客户端,服务器端回应说:" + responseStr);

}

}