用戶端:
package JavaLearn.UDP;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
/**
* Created by ChenHe on 2017/2/21.
* 用戶端
*/
public class UdpClient {
public static void main(String[] atrs) throws IOException {
/**
* 向服務端發送資料
* **/
//1.定義伺服器的位址,端口号,資料
InetAddress address = InetAddress.getByName("localhost");
int port = 8800;
byte[] data = "使用者名:admin;密碼:123".getBytes();
//2.建立資料報,包含發送的資訊
DatagramPacket packet = new DatagramPacket(data,data.length,address,port);
//3.建立DatagramSocket對象
DatagramSocket socket = new DatagramSocket();
//4.向伺服器端發送資料報
socket.send(packet);
/**
* 接收服務端的傳回資料
* */
//1.建立資料報,用于接收伺服器端響應資料
byte[] data2 = new byte[1024];
DatagramPacket packet2 = new DatagramPacket(data2,data2.length);
//2.接收伺服器響應的資料
socket.receive(packet2);
//3.讀取資料
String reply = new String(data2,0,packet2.getLength());
System.out.println("我是用戶端,伺服器說:"+reply);
//4.關閉資源
socket.close();
}
}
服務端:
package JavaLearn.UDP;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
/**
* Created by ChenHe on 2017/2/21.
* 伺服器端,實作基于UDP的使用者登入
*/
public class UdpServer {
public static void main(String[] args) throws IOException {
/**
* 服務端接收用戶端資料
* **/
//1.建立服務端DatagramSocket,指定端口
DatagramSocket socket = new DatagramSocket(8800);
//2.建立資料報,用于接收用戶端發送的資料
byte[] data = new byte[1024];//建立位元組數組,指定接收的資料包大小
DatagramPacket packet = new DatagramPacket(data,data.length);
//3.接收用戶端發送的資料
System.out.println("******伺服器端已經啟動,等待用戶端連入******");
socket.receive(packet);//此方法在接收到資料報之前會一直阻塞
//4.讀取資料
String info = new String(data,0,packet.getLength());
System.out.println("我是伺服器,用戶端說:"+info);
/**
* 服務端響應用戶端
* **/
//1.定義用戶端位址,端口号,資料
InetAddress address = packet.getAddress();
int port = packet.getPort();
byte[] data2 = "歡迎您!".getBytes();
//2.建立資料報,包含響應的資料資訊
DatagramPacket packet2 = new DatagramPacket(data2,data2.length,address,port);
//3.響應用戶端
socket.send(packet2);
//4.關閉socket
socket.close();
}
}