1. 程式人生 > >【Java】udp 實現 client端和server端通訊

【Java】udp 實現 client端和server端通訊

客戶端

 1.建立客戶端+埠
 2.準備資料
 3.打包(傳送的地點及埠)
 4.傳送
 5.釋放
 

服務端

 1.建立服務端+埠
 2.準備接受容器
 3.封裝成包
 4.接受資料
 5.分析資料
 6.釋放 

client.java

package UdpDemo;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.net.SocketException;
import java.util.Scanner;

/**
 * 客戶端
 * 1.建立客戶端+埠
 * 2.準備資料
 * 3.打包(傳送的地點及埠)
 * 4.傳送
 * 5.釋放
 * @author 袁盛桐
 *
 */
public class UdpClient {
	public static void main(String[] args) throws IOException {
		//1.建立客戶端+埠
		DatagramSocket client = new DatagramSocket(5555);
		//2.準備資料
		Scanner sc = new Scanner(System.in); 
		System.out.println("input send msg:");
		String msg = sc.nextLine();
		byte[] data = msg.getBytes();
		//3.打包(傳送的地點及埠)
        DatagramPacket packet = new DatagramPacket(data, data.length,new InetSocketAddress("localhost",7777));
        //4.傳送
        client.send(packet);
        //5.釋放
        client.close();
		
	}
}

server.java

package UdpDemo;

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

/**
 * 服務端
 * 1.建立服務端+埠
 * 2.準備接受容器
 * 3.封裝成包
 * 4.接受資料
 * 5.分析資料
 * 6.釋放
 * @author 袁盛桐
 *
 */
public class UdpServer {
	public static void main(String[] args) throws IOException {
		//1.建立服務端+埠
		DatagramSocket server = new DatagramSocket(7777);
		//2.準備接受容器
		byte[] container = new byte[1024];
		//3.封裝成包
		DatagramPacket packet = new DatagramPacket(container, container.length);
		//4.接受資料
		server.receive(packet);
		//5.分析資料
		byte[] data = packet.getData();
		int len = packet.getLength();
		System.out.println("server receive:"+new String(data,0,len));
		//6.釋放
		server.close();
	}
}

實現通訊

  • 先執行server端,發現server正在等待
  • 再執行client端,實現通訊