網路通訊--協議--udp
阿新 • • 發佈:2018-11-08
網路通訊--協議--udp
UDP demo(java)
- 環境 1.8
- 客戶端和服務端不要放到一個執行緒中去啟動!
//udp 服務端 public class UdpServer{ public static void server(){ try { InetAddress address = InetAddress.getLocalHost();//這個ip 地址,就是cmd使用ipconfig命令中ipv4地址 int port = 8080; //建立DatagramSocket物件 socket物件 DatagramSocket socket = new DatagramSocket(port, address); byte[] buf = new byte[1024]; //定義byte陣列 DatagramPacket packet = new DatagramPacket(buf, buf.length); //建立DatagramPacket物件 System.out.println("服務端啟動:" +address.getHostAddress()+":"+ port); socket.receive(packet); //通過套接字接收資料 System.out.println("服務端接收完成:"); String getMsg = new String(buf, 0, packet.getLength()); System.out.println("客戶端傳送的資料為:" + getMsg); //從伺服器返回給客戶端資料 InetAddress clientAddress = packet.getAddress(); //獲得客戶端的IP地址 int clientPort = packet.getPort(); //獲得客戶端的埠號 SocketAddress sendAddress = packet.getSocketAddress(); String feedback = "Received"; byte[] backbuf = feedback.getBytes(); DatagramPacket sendPacket = new DatagramPacket(backbuf, backbuf.length, sendAddress); //封裝返回給客戶端的資料 socket.send(sendPacket); //通過套接字反饋伺服器資料 socket.close(); //關閉套接字 } catch (UnknownHostException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } } }
//客戶端 public class UdpClent{ public static void send(){ String serverPosrt = "127.0.0.1";//這個ip 地址,就是cmd使用ipconfig命令中ipv4地址 String msg = "Hello, World"; byte[] buf = msg.getBytes(); try { InetAddress address = InetAddress.getByName(""); //伺服器地址 int port = 8080; //伺服器的埠號 //建立傳送方的資料報資訊 DatagramPacket dataGramPacket = new DatagramPacket(buf, buf.length, address, port); DatagramSocket socket = new DatagramSocket(); //建立套接字 socket.send(dataGramPacket); //通過套接字傳送資料 //接收伺服器反饋資料 byte[] backbuf = new byte[1024]; DatagramPacket backPacket = new DatagramPacket(backbuf, backbuf.length); socket.receive(backPacket); //接收返回資料 String backMsg = new String(backbuf, 0, backPacket.getLength()); System.out.println("伺服器返回的資料為:" + backMsg); socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
//啟動服務端
public static void main(String[] args) {
UdpServer.server();
}
//啟動客戶端請求
public static void main(String[] args) {
UdpClent.send();
}