java網路程式設計:12、基於UDP的socket程式設計(二)程式碼通訊-簡單例項
阿新 • • 發佈:2019-01-11
宣告:本教程不收取任何費用,歡迎轉載,尊重作者勞動成果,不得用於商業用途,侵權必究!!!
文章目錄
通過上篇文章瞭解了基於UDP通訊的理論、基本步驟以及它跟TCP的區別,大家如需瞭解可參考 java網路程式設計:11、基於UDP的socket程式設計(一)理論、基本步驟 這篇寫一個簡單的例項來感受一下!
一、基於UDP伺服器端程式的編寫
/** * 基於UDP伺服器端程式的編寫 */ public static void recv() { try { //建立資料報套接字物件,繫結埠號為6000 DatagramSocket ds = new DatagramSocket(6000); //構建資料包接收資料: //建立位元組陣列 byte[] buf = new byte[100]; //建立資料包物件,它的長度不能超過陣列的長度,我們把它設為100 DatagramPacket dp = new DatagramPacket(buf, 100); //接收資料 ds.receive(dp); //列印資料 //getLength方法返回實際接收數;getData方法返回資料,返回格式為位元組陣列 System.out.println(new String(buf, 0, dp.getLength())); //關閉資料報套接字 ds.close(); } catch (Exception ex) { ex.printStackTrace(); } }
二、基於UDP客戶端程式的編寫
/** * 基於UDP客戶端程式的編寫 */ public static void send() { try { //建立一個數據報物件。 DatagramSocket ds = new DatagramSocket(); //要傳送的資料 String str = "Hello,this is zhangsan"; //構造一個傳送資料包: //InetAddress.getByName("localhost"):獲得本地ip地址 //埠號指定為6000 DatagramPacket dp = new DatagramPacket( str.getBytes(), str.length(), InetAddress.getByName("localhost"), 6000); //傳送資料包 ds.send(dp); //關閉資料報套接字 ds.close(); } catch (Exception ex) { ex.printStackTrace(); } }
三、測試列印
我們先啟動recv接收端,然後再啟動send傳送端,那麼我們可以看到接收端收到了資訊,如下圖:
那麼對於這個recv接收端來說,它能不能夠給我們send傳送端,回一個資訊呢?
詳見下篇文章: java網路程式設計:13、基於UDP的socket程式設計(三)實現相互發送接收訊息
四、系列文章(java網路程式設計)
java網路程式設計:1、計算機網路?網路通訊的組成?什麼是ip、協議、埠號?
java網路程式設計:2、IP地址、協議、網路狀況、網路異質性問題的解決
java網路程式設計:6、TCP/IP模型、TCP/IP模型與OSI參考模型的對應關係
java網路程式設計:8、基於TCP的socket程式設計(一)簡單的socket通訊_一個客戶端
java網路程式設計:9、基於TCP的socket程式設計(二)伺服器端迴圈監聽接收多個客戶端_多執行緒伺服器程式
java網路程式設計:10、基於TCP的socket程式設計(二)緩衝流、flush方法、關閉流
java網路程式設計:11、基於UDP的socket程式設計(一)理論、基本步驟
java網路程式設計:12、基於UDP的socket程式設計(二)程式碼通訊-簡單例項
java網路程式設計:13、基於UDP的socket程式設計(三)實現相互發送接收訊息