ホームページ  >  記事  >  Java  >  Java データグラムソケット

Java データグラムソケット

王林
王林オリジナル
2024-08-30 16:16:30529ブラウズ

Java DatagramSocket クラスは、コネクションレス型のネットワーク ソケットのタイプを表し、データグラムのパケットの送信とデータグラムのパケットの受信に使用されます。パケットの配信では、データグラム ソケットがサービスの送受信ポイントとなり、データグラム ソケットを使用して送受信されるすべてのパケットは個別にアドレス指定されて宛先にルーティングされます。複数のパケットが 2 台のマシン間で送信される場合、パケットのルーティングは異なる場合があり、任意の順序で到着する可能性があり、ブロードキャスト ダイアグラムの送信を可能にする新しく構築されたデータグラム ソケットで SO_BROADCAST オプションが有効になります。

広告 このカテゴリーの人気コース JAVA マスタリー - スペシャライゼーション | 78 コース シリーズ | 15 回の模擬テスト

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

構文

Java DatagramSocket の構文は次のとおりです:

DatagramSocket variable_name = new DatagramSocket();

DatagramSocket は Java でどのように機能しますか?

  • データグラム ソケットは、通信リンクとデータ パケットの送受信に DatagramSocket クラスを使用することにより、クライアント プログラム側とサーバー プログラム側で作成されます。
  • クライアント プログラム側でデータグラム ソケットを作成するには DatagramSocket() コンストラクターを選択でき、サーバー プログラム側でデータグラム ソケットを作成するには DatagramSocket(int port) コンストラクターを選択できます。
  • SocketException オブジェクトは、データグラム ソケットを作成できない場合、またはデータグラム ソケットをポートにバインドできない場合、いずれかのコンストラクターによってスローされます。
  • プログラムがデータグラム ソケット オブジェクトを作成すると、プログラムは send(DatagramPacket dgp) を呼び出してデータグラム パケットを送信し、receive(DatagramPacket dgp) を呼び出してデータグラム パケットを受信します。

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();
}
}

出力:

Java データグラムソケット

説明: 上記のプログラムでは、DatagramSocket クラスを使用してデータ パケットを送信するプログラムと、DatagramSocket クラスを使用してデータ パケットを受信するプログラムの 2 つのセットが作成されます。 DatagramSocketクラスを利用してデータパケットを送信するプログラムでは、DatagramSocketクラスのインスタンスを作成します。次に、文字列が変数 strn に割り当てられます。次に、インターネット IP アドレスが変数に割り当てられます。次に、データグラム パケットが作成され、DatagramSocket クラスの send メソッドを使用してデータ パケットが宛先 IP アドレスに送信されます。

DatagramSocketクラスを利用してデータパケットを受信するプログラムでは、DatagramSocketクラスのインスタンスを作成します。次にバイトクラスのインスタンスを作成します。次にデータグラムパケットを作成し、DatagramSocketクラスのreceiveメソッドを使用して送信元IPアドレス宛てのデータパケットを受信します。

コンストラクター

DatagramSocket クラスにはいくつかのコンストラクターがあります。それらは次のとおりです:

  • DatagramSocket(): データグラム ソケットは DatagramSocket() コンストラクターを使用して構築され、ローカル ホスト マシン上の使用可能なポートにバインドされます。
  • DatagramSocket(int): データグラム ソケットは DatagramSocket() コンストラクターを使用して構築され、ローカル ホスト マシン上の指定されたポートにバインドされます。
  • DatagramSocket(int, InetAddress): データグラム ソケットは DatagramSocket() コンストラクターを使用して作成され、指定されたローカル インターネット アドレスにバインドされます。

Java 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());
}
}

出力:

Java データグラムソケット

説明: 上記のプログラムでは、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:Java ラムダ式次の記事:Java ラムダ式