Java DatagramSocket 類別代表一種無連接的網路套接字,用於發送資料封包和接收資料封包;對於任何資料包的傳遞,資料報套接字是服務的發送和接收點,並且使用資料報套接字發送或接收的每個資料包都被單獨尋址,然後路由到目的地,並且如果在兩台機器之間傳輸多個資料包,資料包的路由可能不同,並且它們可以按任何順序到達,並且在新建的資料報套接字中啟用了SO_BROADCAST 選項,該套接字允許傳輸廣播圖。
廣告 該類別中的熱門課程 JAVA 掌握 - 專業化 | 78 課程系列 | 15 次模擬測驗開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
文法
java DatagramSocket 文法如下:
DatagramSocket variable_name = new DatagramSocket();
考慮下面的程序,使用 DatagramSocket 類別發送和接收資料報包:
代碼:
//Java program to send datagram packets using DatagramSocket class import java.net.*; public class Sender { public static void main(String[] args) throws Exception { DatagramSocket datasoc = new DatagramSocket(); String strn = "Welcome to DatagramSocket class"; InetAddress ipaddr = InetAddress.getByName("127.0.0.1"); DatagramPacket dpac = new DatagramPacket(strn.getBytes(), strn.length(), ipaddr, 3000); datasoc.send(dpac); datasoc.close(); } } //Java program to receive datagram packets using DatagramSocket class import java.net.*; public class Receiver { public static void main(String[] args) throws Exception { DatagramSocket datasoc = new DatagramSocket(3000); byte[] buff = new byte[1024]; DatagramPacket dpac = new DatagramPacket(buff, 1024); datasoc.receive(dpac); String strn = new String(dpac.getData(), 0, dpac.getLength()); System.out.println(strn); datasoc.close(); } }
輸出:
說明: 在上面的程式中,建立了兩組程式:使用 DatagramSocket 類別傳送封包,一組使用 DatagramSocket 類別接收封包。在使用DatagramSocket類別傳送封包的程式中,建立了DatagramSocket類別的實例。然後將字串賦給變數strn。然後將互聯網 IP 位址分配給一個變數。然後,建立資料封包包,並使用DatagramSocket類別的send方法將封包傳送到目的IP位址。
在使用DatagramSocket類別接收封包的程式中,建立了一個DatagramSocket類別的實例。然後創建位元組類別的實例。然後,建立資料封包包,並使用DatagramSocket類別的receive方法將封包接收到來源IP位址。
DatagramSocket 類別有多個建構子。他們是:
以下是提到的範例:
示範DatagramScoket類別的各種方法的用法。
代碼:
import java.io.IOException; import java.net.DatagramSocket; public class program { public static void main(String[] args) throws IOException { //Datagram Socket class Constructor is called DatagramSocket sock = new DatagramSocket(1235); // The method setSendBufferSize() method of datagram socket class is called sock.setSendBufferSize(20); // The method getSendBufferSize() method of datagram socket class is called System.out.println("The buffer size sent is : " + sock.getSendBufferSize()); // The method setReceiveBufferSize() method of datagram socket class is called sock.setReceiveBufferSize(20); // The method getReceiveBufferSize() method of datagram socket class is called System.out.println("The buffer size received is : " + sock.getReceiveBufferSize()); // The method setReuseAddress() method of datagram socket class is called sock.setReuseAddress(false); // The method getReuseAddress() method of datagram socket class is called System.out.println("The SetReuse address is set to : " + sock.getReuseAddress()); // The method setBroadcast() method of datagram socket class is called sock.setBroadcast(true); // The method getBroadcast() method of datagram socket class is called System.out.println("The setBroadcast is set to : " + sock.getBroadcast()); // The method setTrafficClass() method of datagram socket class is called sock.setTrafficClass(45); // The method getTrafficClass() method of datagram socket class is called System.out.println("The Traffic class is set to : " + sock.getTrafficClass()); // The method getChannel() method of datagram socket class is called System.out.println("The Channel is set to : " + ((sock.getChannel()!=null)?sock.getChannel():"null")); // The method setSocketImplFactory() method of datagram socket class is called sock.setDatagramSocketImplFactory(null); // The method close() method of datagram socket class is called sock.close(); // The method isClosed() method of datagram socket class is called System.out.println("If the Socket Is Closed : " + sock.isClosed()); } }
輸出:
說明:在上面的程式中,定義了一個名為program的類別。然後建立資料報套接字類別的實例。呼叫資料報套接字類別的setSendBufferSize()方法,該方法會傳送緩衝區大小。然後呼叫資料報套接字類別的 getSendBufferSize() 方法,該方法接收緩衝區大小。
然後呼叫資料報套接字類別的setReceiveBufferSize()方法,然後呼叫資料報套接字類別的getReceiveBufferSize()方法,用於傳送和接收緩衝區大小。然後呼叫資料報套接字類別的setReuseAddress()方法,然後呼叫資料報套接字類別的getReuseAddress()方法來傳送和接收重用位址。
然後呼叫資料報套接字類別的setBroadcast()方法,然後呼叫資料報套接字類別的getBroadcast()方法來設定和取得廣播。然後呼叫資料報套接字類別的setTrafficClass()方法,然後呼叫資料報套接字類別的getTrafficClass()方法來設定和取得流量類別。
然後呼叫資料報套接字類別的 getChannel() 方法,該方法傳回 true 或 false。然後呼叫資料報套接字類別的close()方法來關閉套接字。然後呼叫資料報套接字類別的 isClosed() 方法來檢查套接字是否關閉,如果套接字關閉則傳回 true,否則傳回 false。
在本教程中,我們透過定義了解 Java 中 DatagramSocket 類別的概念、Java 中 DatagramSocket 類別的語法、透過範例及其輸出來了解 Java 中 DatagramSocket 類別的工作原理。
以上是Java 資料報套接字的詳細內容。更多資訊請關注PHP中文網其他相關文章!