歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 基於UDP協議的socket通信

基於UDP協議的socket通信

日期:2017/3/1 9:06:11   编辑:Linux編程

服務器端:

1、創建DatagramSocket,指定端口號

2、創建DatagramPacket

3、接收客戶端發送的數據信息

4、讀取數據

客戶端:

1、定義發送信息

2、創建DatagramPacket,包含將要發送的信息

3、創建DatagramSocket

4、發送數據

Server.java

public class UDPServer {

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

/**

* 接收客戶端發送的數據

*/

//1、創建服務器端DatagramSocket,指定端口

DatagramSocket socket = new DatagramSocket(8888);

//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();

}

}

Client.java

public class UDPClient {

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

/**

* 向服務器端發送數據

*/

//1、定義服務器的地址,端口號以及數據

InetAddress address = InetAddress.getByName("localhost");

int port = 8888;

byte[] data = "用戶名:adm;密碼: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();

}

}

Copyright © Linux教程網 All Rights Reserved