三、UDP實現簡單的socket通訊例項
阿新 • • 發佈:2018-11-07
1.伺服器端程式碼
package udp; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /** * 類功能描述:伺服器端,先啟動伺服器端後啟動客戶端 * * @author:*** * @createTime:2018/11/7 10:07 */ public class Server { public static void main(String[] args) { try { /** * 接收客戶端資料 */ //1.建立伺服器端datagramSocket DatagramSocket socket = new DatagramSocket(18081); //2.建立資料報,用於接收客戶端傳送的資料 byte[] data = new byte[1024]; DatagramPacket packet = new DatagramPacket(data, data.length); System.out.println("伺服器已經啟動,等待客戶端傳送資料:"); //3.接收客戶端傳送的資料(接收資料報之前一直阻塞) socket.receive(packet); //4.讀取客戶端傳送的資料 String info = new String(data, 0, packet.getLength()); System.out.println("接收客戶端傳送資訊為:" + info); /** * 向客戶端響應資料 */ InetAddress address = packet.getAddress(); byte[] resData = "伺服器響應資訊".getBytes(); DatagramPacket resPacket = new DatagramPacket(resData, resData.length, address, packet.getPort()); socket.send(resPacket); System.out.println("向客戶端傳送資料成功!"); } catch (Exception e) { e.printStackTrace(); } } }
2.客戶端程式碼
package udp; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.Socket; /** * 類功能描述:客戶端 * * @author:*** * @createTime:2018/11/7 10:14 */ public class Client { public static void main(String[] args) { try { /** * 向伺服器傳送資訊 */ //1.定義伺服器地址 埠 資料 InetAddress address = InetAddress.getLocalHost(); byte[] data = "客戶端發往伺服器的資料".getBytes(); //2.建立資料報 DatagramPacket packet = new DatagramPacket(data, data.length, address, 18081); //4.向伺服器傳送資料 DatagramSocket socket = new DatagramSocket(); socket.send(packet); System.out.println("向伺服器傳送資料成功!"); /** * 接收伺服器響應資訊 */ byte[] reqData = new byte[1024]; DatagramPacket reqPacket = new DatagramPacket(reqData, reqData.length); socket.receive(reqPacket); String info = new String(reqData, 0, reqPacket.getLength()); System.out.println("接收伺服器的響應資料為:" + info); } catch (Exception e) { e.printStackTrace(); } } }