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中文网其他相关文章!