1. 程式人生 > >Java通過Socket實現UDP程式設計及Socket總結

Java通過Socket實現UDP程式設計及Socket總結

UDPServer.java

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/*
 * 伺服器端,實現基於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.close();
	}
}

UDPClient.java
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

/*
 * 客戶端
 */
public class UDPClient {
	public static void main(String[] args) 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();
	}
}

Socket總結