Java DatagramSocket クラスは、コネクションレス型のネットワーク ソケットのタイプを表し、データグラムのパケットの送信とデータグラムのパケットの受信に使用されます。パケットの配信では、データグラム ソケットがサービスの送受信ポイントとなり、データグラム ソケットを使用して送受信されるすべてのパケットは個別にアドレス指定されて宛先にルーティングされます。複数のパケットが 2 台のマシン間で送信される場合、パケットのルーティングは異なる場合があり、任意の順序で到着する可能性があり、ブロードキャスト ダイアグラムの送信を可能にする新しく構築されたデータグラム ソケットで SO_BROADCAST オプションが有効になります。
広告 このカテゴリーの人気コース JAVA マスタリー - スペシャライゼーション | 78 コース シリーズ | 15 回の模擬テスト無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
構文
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 クラスを使用してデータ パケットを受信するプログラムの 2 つのセットが作成されます。 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 中国語 Web サイトの他の関連記事を参照してください。