package com.bjpowernode.java_learning; import java.io.IOException; import java.net.DatagramPacket; import java.net.InetAddress; import java.net.MulticastSocket; public class D129_1_BroadcastTest { public static void main(String[] args) { new D129_Broadcast().send(); } } class D129_Broadcast { public void send() { String msg = "Hello,This is Broadcast Message"; //多播內容 int port = 6666; InetAddress group = null; MulticastSocket ms = null; try { group = InetAddress.getByName("224.1.1.1"); //建立多播地址 ms = new MulticastSocket(port); //建立多播套接字 ms.joinGroup(group); //將套接字加入多播地址 ms.setTimeToLive(1); //設置數據報發送範圍爲本地 DatagramPacket dp = new DatagramPacket(msg.getBytes(),msg.length(),group,port);//建立待發送的數據報 ms.send(dp); //發送數據報 }catch(IOException e) { System.out.println(e); }finally { ms.close(); //關閉套接字 } } }
package com.bjpowernode.java_learning; import java.net.DatagramPacket; public class D129_2_ReceiverTest { public static void main(String[] args) { new D129Receiver().receive(); } } class D129Receiver{ public void receive() { byte[] data = new byte[1024]; //數據緩存區 int port = 6666; //多播端口號 InetAddress group = null; MuticastSocket ms = null; try { group = InetAddress.getName("224.1.1.1"); //建立多播地址 ms = new MulticastSocket(port); //建立多播套接字 ms.joinGroup(group); //將套接字加入到多播地址 DatagramPacket dp = new DatagramPacket(data,data,length,group,port); //建立待接收的數據報 ms.receive(dp); //接收數據報 String msg = new String(dp.getData(),0,dp.getLength()); System.out.println("接收到的數據廣播數據爲:"+msg); }catch(IOException e) { System.out.println(e); }finally { ms.close(); //關閉套接字 } } }
總結:
(1)TCP和UDP之間的區別有哪些? TCP是面向鏈接的流傳輸控制協議,具備高可靠性,確保傳輸數據的正確性,有驗證重發機制,保證傳輸過去的數據不會出現丟失或者亂序的狀況。
UDP是無鏈接的數據服務,不對數據的完整性進行檢查與修改,無需等待對方應答,會出現分組丟失,重複,亂序的狀況,但傳輸效率高,實時性很好,適用於局域網內部傳輸。報文協議頭簡單。
(2)Socket的網絡編程過程簡述
首先是客戶端,首先建立一個Socket實例,利用構造方法,綁定要通訊的地址和端口,而後經過套接字的I/O流進行通訊,最後通訊接收,調用成員方法close()來關閉Socket;
而後是服務器端,首先創建一個ServerSocket實例,並使用構造方法來綁定本地IP地址以及端口號,用於監聽將會收到的TCP請求。而後作以下循環:調用成員方法accept()來獲取客戶端的鏈接,而且返回一個Socekt實例。爲返回的Socket實例建立一個線程,而且使用返回的Socket實力的I\O流與客戶端通訊;最後使用成員方法進行關閉。java