- java.lang.Object
-
- java.net.DatagramSocket
-
- すべての実装されたインタフェース:
Closeable,AutoCloseable
- 直系の既知のサブクラス:
MulticastSocket
public class DatagramSocket extends Object implements Closeable
このクラスは、データグラム・パケットを送受信するためのソケットを表します。データグラム・ソケットは、パケット配信サービスの送信点または受信点です。 データグラム・ソケット上で送信または受信する各パケットは、それぞれ異なるアドレスで経路を指定されます。 あるマシンから別のマシンに複数のパケットを送信する場合、各パケットは異なる経路で送信される可能性があり、宛先には任意の順序で到達する可能性があります。
可能な場合、新しく構築された
DatagramSocketは、ブロードキャスト・データグラムの転送を許可するためにSO_BROADCASTソケット・オプションを有効にします。 ブロードキャスト・パケットを受信するときは、DatagramSocketをワイルドカード・アドレスにバインドするようにしてください。 実装によっては、DatagramSocketが特定のアドレスにバインドされていてもブロードキャスト・パケットを受信する場合もあります。例:
DatagramSocket s = new DatagramSocket(null); s.bind(new InetSocketAddress(8888));と等価です:DatagramSocket s = new DatagramSocket(8888);どちらの場合も、UDPポート8888でブロードキャストを受信できるDatagramSocketが作成されます。- 導入されたバージョン:
- 1.0
- 関連項目:
DatagramPacket,DatagramChannel
-
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 DatagramSocket()データグラム・ソケットを構築し、ローカル・ホスト・マシン上の使用可能なポートにバインドします。DatagramSocket(int port)データグラム・ソケットを構築し、ローカル・ホスト・マシン上の指定されたポートにバインドします。DatagramSocket(int port, InetAddress laddr)指定されたローカル・アドレスにバインドされたデータグラム・ソケットを作成します。protectedDatagramSocket(DatagramSocketImpl impl)指定されたDatagramSocketImplを使用してバインドされていないデータグラム・ソケットを作成します。DatagramSocket(SocketAddress bindaddr)指定されたローカル・ソケット・アドレスにバインドされたデータグラム・ソケットを作成します。
-
メソッドのサマリー
すべてのメソッド staticメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 voidbind(SocketAddress addr)このDatagramSocketを特定のアドレスおよびポートにバインドします。voidclose()このデータグラム・ソケットを閉じます。voidconnect(InetAddress address, int port)ソケットをこのソケットのリモート・アドレスに接続します。voidconnect(SocketAddress addr)このソケットをリモート・ソケット・アドレス(IPアドレス+ポート番号)に接続します。voiddisconnect()ソケットを切断します。booleangetBroadcast()SO_BROADCASTが有効かどうかを調べます。DatagramChannelgetChannel()このデータグラム・ソケットに付けられた一意のDatagramChannelオブジェクトを返します(存在する場合)。InetAddressgetInetAddress()このソケットの接続先のアドレスを返します。InetAddressgetLocalAddress()ソケットのバインド先のローカル・アドレスを取得します。intgetLocalPort()このソケットのバインド先となる、ローカル・ホスト上のポート番号を返します。SocketAddressgetLocalSocketAddress()このソケットのバインド先の端点のアドレスを返します。<T> TgetOption(SocketOption<T> name)ソケット・オプションの値を返します。intgetPort()このソケットの接続先のポート番号を返します。intgetReceiveBufferSize()このDatagramSocketで使われるSO_RCVBUFオプションの値を取得します。これは、このDatagramSocketで入力用としてプラットフォームが使うバッファのサイズです。SocketAddressgetRemoteSocketAddress()このソケットが接続されている端点のアドレスを返します。ソケットが接続されていない場合はnullを返します。booleangetReuseAddress()SO_REUSEADDRが有効かどうかを調べます。intgetSendBufferSize()このDatagramSocketで使われるSO_SNDBUFオプションの値を取得します。これは、このDatagramSocketで出力用としてプラットフォームが使うバッファのサイズです。intgetSoTimeout()SO_TIMEOUTの設定を取得します。このオプションが無効(タイム・アウトが無限)の場合は0を返します。intgetTrafficClass()このDatagramSocketから送信されるパケットのIPデータグラム・ヘッダーのトラフィック・クラスまたはサービス型を取得します。booleanisBound()ソケットのバインディング状態を返します。booleanisClosed()ソケットが閉じたかどうかを返します。booleanisConnected()ソケットの接続状態を返します。voidreceive(DatagramPacket p)このソケットからのデータグラム・パケットを受信します。voidsend(DatagramPacket p)このソケットからデータグラム・パケットを送信します。voidsetBroadcast(boolean on)SO_BROADCASTを有効または無効にします。static voidsetDatagramSocketImplFactory(DatagramSocketImplFactory fac)アプリケーションのデータグラム・ソケット実装ファクトリを設定します。<T> DatagramSocketsetOption(SocketOption<T> name, T value)ソケット・オプションの値を設定します。voidsetReceiveBufferSize(int size)SO_RCVBUFオプションを、このDatagramSocketに指定された値に設定します。voidsetReuseAddress(boolean on)SO_REUSEADDRソケット・オプションを有効または無効にします。voidsetSendBufferSize(int size)SO_SNDBUFオプションを、このDatagramSocketに指定された値に設定します。voidsetSoTimeout(int timeout)指定されたタイム・アウト(ミリ秒)を使ってSO_TIMEOUTを有効または無効にします。voidsetTrafficClass(int tc)このDatagramSocketから送信されるデータグラムのIPデータグラム・ヘッダーのトラフィック・クラスまたはサービス型octetを設定します。Set<SocketOption<?>>supportedOptions()このソケットでサポートされているソケット・オプションのセットを返します。
-
-
-
コンストラクタの詳細
-
DatagramSocket
public DatagramSocket() throws SocketExceptionデータグラム・ソケットを構築し、ローカル・ホスト・マシン上の使用可能なポートにバインドします。 ソケットはwildcardアドレス(カーネルによって選択されたIPアドレス)にバインドされます。セキュリティ・マネージャが存在する場合、この操作が許可されるように、最初にその
checkListenメソッドが0を引数に指定して呼び出されます。 この結果、SecurityExceptionがスローされることがあります。- 例外:
SocketException- ソケットを開くことができなかった場合、または指定されたローカル・ポートにソケットをバインドできなかった場合。SecurityException- セキュリティ・マネージャが存在し、そのcheckListenメソッドでこの操作が許可されていない場合。- 関連項目:
SecurityManager.checkListen(int)
-
DatagramSocket
protected DatagramSocket(DatagramSocketImpl impl)
指定されたDatagramSocketImplを使用してバインドされていないデータグラム・ソケットを作成します。- パラメータ:
impl- サブクラスがDatagramSocket上で使用するDatagramSocketImplのインスタンス。- 導入されたバージョン:
- 1.4
-
DatagramSocket
public DatagramSocket(SocketAddress bindaddr) throws SocketException
指定されたローカル・ソケット・アドレスにバインドされたデータグラム・ソケットを作成します。アドレスが
nullの場合は、バインドされていないソケットを作成します。セキュリティ・マネージャが存在する場合は、まずセキュリティ・マネージャの
checkListenメソッドがソケット・アドレスのポートを引数として呼び出され、操作が許可されるかどうかが確認されます。 この結果、SecurityExceptionがスローされることがあります。- パラメータ:
bindaddr- バインドするローカル・ソケット・アドレス。バインドされていないソケットの場合はnull。- 例外:
SocketException- ソケットを開くことができなかった場合、または指定されたローカル・ポートにソケットをバインドできなかった場合。SecurityException- セキュリティ・マネージャが存在し、そのcheckListenメソッドでこの操作が許可されていない場合。- 導入されたバージョン:
- 1.4
- 関連項目:
SecurityManager.checkListen(int)
-
DatagramSocket
public DatagramSocket(int port) throws SocketExceptionデータグラム・ソケットを構築し、ローカル・ホスト・マシン上の指定されたポートにバインドします。 ソケットはwildcardアドレス(カーネルによって選択されたIPアドレス)にバインドされます。セキュリティ・マネージャが存在する場合、この操作が許可されるように、最初にその
checkListenメソッドがport引数をその引数として指定して呼び出されます。 この結果、SecurityExceptionがスローされることがあります。- パラメータ:
port- 使用するポート。- 例外:
SocketException- ソケットを開くことができなかった場合、または指定されたローカル・ポートにソケットをバインドできなかった場合。SecurityException- セキュリティ・マネージャが存在し、そのcheckListenメソッドでこの操作が許可されていない場合。- 関連項目:
SecurityManager.checkListen(int)
-
DatagramSocket
public DatagramSocket(int port, InetAddress laddr) throws SocketException指定されたローカル・アドレスにバインドされたデータグラム・ソケットを作成します。 ローカル・ポートは、0から65535の範囲で指定します。 IPアドレスが0.0.0.0の場合、ソケットはワイルドカード・アドレス(カーネルによって選択された任意のIPアドレス)にバインドされます。セキュリティ・マネージャが存在する場合、この操作が許可されるように、最初にその
checkListenメソッドがport引数をその引数として指定して呼び出されます。 この結果、SecurityExceptionがスローされることがあります。- パラメータ:
port- 使用するローカル・ポートladdr- バインド先のローカル・アドレス- 例外:
SocketException- ソケットを開くことができなかった場合、または指定されたローカル・ポートにソケットをバインドできなかった場合。SecurityException- セキュリティ・マネージャが存在し、そのcheckListenメソッドでこの操作が許可されていない場合。- 導入されたバージョン:
- 1.1
- 関連項目:
SecurityManager.checkListen(int)
-
-
メソッドの詳細
-
bind
public void bind(SocketAddress addr) throws SocketException
このDatagramSocketを特定のアドレスおよびポートにバインドします。アドレスが
nullの場合は、システムにより一時的なポートと有効なローカル・アドレスが選択されてソケットがバインドされます。- パラメータ:
addr- バインド先のアドレスおよびポート。- 例外:
SocketException- バインド時にエラーが発生した場合、またはソケットがすでにバインドされている場合。SecurityException- セキュリティ・マネージャが存在し、そのcheckListenメソッドでこの操作が許可されていない場合。IllegalArgumentException- addrがこのソケットでサポートされていないSocketAddressサブクラスである場合。- 導入されたバージョン:
- 1.4
-
connect
public void connect(InetAddress address, int port)
ソケットをこのソケットのリモート・アドレスに接続します。 ソケットがリモート・アドレスに接続されると、そのアドレスとの間でしかパケットを送受信できなくなります。 デフォルトでは、データグラム・ソケットは接続されません。ソケットを接続するリモート接続先が存在しないか到達不可能の場合、およびそのアドレスに対するICMP転送先到達不能パケットを受信した場合は、以降の送信または受信呼出しでPortUnreachableExceptionがスローされることがあります。 例外が必ずスローされるとは限らないことに注意。
セキュリティ・マネージャがインストールされている場合、リモート・アドレスへのアクセスをチェックするためにそれが呼び出されます。 具体的には、指定した
addressがマルチキャスト・アドレスである場合、指定したaddressを使ってセキュリティ・マネージャのcheckMulticastメソッドが呼び出されます。 その他の場合、指定したaddressとportを使って、セキュリティ・マネージャのcheckConnectメソッドとcheckAcceptメソッドが呼び出され、それぞれ、データグラムの送信と受信が許可されていることを確認します。ソケットが接続されたとき、
receiveとsendではパケットの受信および送信に対するセキュリティ・チェックを行いません。ただし、パケットとソケットのアドレスおよびポートが一致するかどうかの確認は行います。 送信の処理では、パケットのアドレスが設定されている場合に、パケットのアドレスとソケットのアドレスが一致しないときは、IllegalArgumentExceptionがスローされます。 マルチキャスト・アドレスに接続されているソケットは、送信パケットだけに使用できます。- パラメータ:
address- ソケットが使うリモート・アドレスport- ソケットが使うリモート・ポート。- 例外:
IllegalArgumentException- アドレスがnullである場合、またはポートが範囲外の場合。SecurityException- セキュリティ・マネージャがインストールされていて、指定されたリモート・アドレスへのアクセスが許可されていない場合- 関連項目:
disconnect()
-
connect
public void connect(SocketAddress addr) throws SocketException
このソケットをリモート・ソケット・アドレス(IPアドレス+ポート番号)に接続します。InetSocketAddressが指定されている場合、このメソッドは、指定されたソケット・アドレスIPアドレスとポート番号でconnect(InetAddress,int)を呼び出すかのように動作します。- パラメータ:
addr- リモート・アドレス。- 例外:
SocketException- 接続に失敗した場合IllegalArgumentException-addrがnullであるか、addrがこのソケットによってサポートされていないSocketAddressサブクラスである場合SecurityException- セキュリティ・マネージャがインストールされていて、指定されたリモート・アドレスへのアクセスが許可されていない場合- 導入されたバージョン:
- 1.4
-
disconnect
public void disconnect()
ソケットを切断します。 ソケットが閉じられている場合や接続されていない場合、このメソッドは効果がありません。
-
isBound
public boolean isBound()
ソケットのバインディング状態を返します。ソケットが
closedとなる前にバインドされていた場合、このメソッドはソケットが閉じられた後も引き続きtrueを返します。- 戻り値:
- ソケットが正常にアドレスにバインドされている場合はtrue
- 導入されたバージョン:
- 1.4
-
isConnected
public boolean isConnected()
ソケットの接続状態を返します。ソケットが
closedとなる前に接続されていた場合、このメソッドはソケットが閉じられた後も引き続きtrueを返します。- 戻り値:
- ソケットがサーバーに正常に接続されている場合はtrue
- 導入されたバージョン:
- 1.4
-
getInetAddress
public InetAddress getInetAddress()
このソケットの接続先のアドレスを返します。 ソケットが接続されていない場合はnullを返します。ソケットが
閉じられる前に接続されていた場合は、このメソッドはソケットが閉じられたあとも引き続き接続先アドレスを返します。- 戻り値:
- ソケットが接続されているアドレス。
-
getPort
public int getPort()
このソケットの接続先のポート番号を返します。 ソケットが接続されていない場合は-1を返します。ソケットが
閉じられる前に接続されていた場合は、このメソッドはソケットが閉じられたあとも引き続き接続先ポート番号を返します。- 戻り値:
- このソケットが接続されているポート番号。
-
getRemoteSocketAddress
public SocketAddress getRemoteSocketAddress()
このソケットが接続されている端点のアドレスを返します。ソケットが接続されていない場合はnullを返します。ソケットが
閉じられる前に接続されていた場合は、このメソッドはソケットが閉じられたあとも引き続き接続先アドレスを返します。- 戻り値:
- このソケットのリモート端点を表す
SocketAddress。ソケットがまだ接続されていない場合はnull。 - 導入されたバージョン:
- 1.4
- 関連項目:
getInetAddress(),getPort(),connect(SocketAddress)
-
getLocalSocketAddress
public SocketAddress getLocalSocketAddress()
このソケットのバインド先の端点のアドレスを返します。- 戻り値:
- このソケットのローカル端点を表す
SocketAddress。ソケットが閉じられているか、まだバインドされていない場合はnull。 - 導入されたバージョン:
- 1.4
- 関連項目:
getLocalAddress(),getLocalPort(),bind(SocketAddress)
-
send
public void send(DatagramPacket p) throws IOException
このソケットからデータグラム・パケットを送信します。DatagramPacketには、送信するデータ、データの長さ、リモート・ホストのIPアドレス、およびリモート・ホスト上のポート番号などの情報が格納されています。セキュリティ・マネージャが存在し、ソケットが現在リモート・アドレスに接続されていない場合、このメソッドは最初にいくつかのセキュリティ・チェックを行います。 最初に、
p.getAddress().isMulticastAddress()がtrueの場合、このメソッドは引数としてp.getAddress()を使い、セキュリティ・マネージャのcheckMulticastメソッドを呼び出します。 その式の評価がfalseの場合、このメソッドは代わりに、セキュリティ・マネージャのcheckConnectメソッドを、引数p.getAddress().getHostAddress()とp.getPort()を指定して呼び出します。 それぞれのセキュリティ・マネージャ・メソッド呼出しの結果、操作が許可されない場合はSecurityExceptionがスローされます。- パラメータ:
p- 送信されるDatagramPacket。- 例外:
IOException- 入出力エラーが発生した場合。SecurityException- セキュリティ・マネージャが存在し、そのcheckMulticastまたはcheckConnectメソッドが送信を許可しない場合。PortUnreachableException- 現在到達不可能になっている宛先にソケットが接続されている場合にスローされる可能性があります。 例外が必ずスローされるとは限らないことに注意。IllegalBlockingModeException- このソケットに関連するチャネルが存在し、そのチャネルが非ブロック・モードである場合。IllegalArgumentException- ソケットが接続されていて、接続したアドレスとパケットのアドレスが異なっている場合。- 関連項目:
DatagramPacket,SecurityManager.checkMulticast(InetAddress),SecurityManager.checkConnect(java.lang.String, int)
-
receive
public void receive(DatagramPacket p) throws IOException
このソケットからのデータグラム・パケットを受信します。 このメソッドが復帰すると、DatagramPacketのバッファには受信したデータが格納されます。 データグラム・パケットには、送信者のIPアドレスと、送信者のマシンのポート番号も格納されています。このメソッドはデータグラムが受信されるまでブロックされます。 データグラム・パケット・オブジェクトの
lengthフィールドには、受信されるメッセージの長さの情報が格納されています。 メッセージがパケットよりも長い場合、メッセージは切り詰められます。セキュリティ・マネージャが存在する場合、セキュリティ・マネージャの
checkAcceptメソッドがパケットの受信を許可しないときは、パケットの受信は行われません。- パラメータ:
p- 受信したデータを保存するDatagramPacket。- 例外:
IOException- 入出力エラーが発生した場合。SocketTimeoutException- setSoTimeoutが以前に呼び出されて、タイム・アウトが過ぎた場合。PortUnreachableException- 現在到達不可能になっている宛先にソケットが接続されている場合にスローされる可能性があります。 例外が必ずスローされるとは限らないことに注意。IllegalBlockingModeException- このソケットに関連するチャネルが存在し、そのチャネルが非ブロック・モードである場合。- 関連項目:
DatagramPacket、DatagramSocket
-
getLocalAddress
public InetAddress getLocalAddress()
ソケットのバインド先のローカル・アドレスを取得します。セキュリティ・マネージャが存在する場合は、まずセキュリティ・マネージャの
checkConnectメソッドがホスト・アドレスおよび-1を引数として呼び出され、操作が許可されるかどうかが確認されます。- 戻り値:
- ソケットのバインド先のローカル・アドレス。ソケットが閉じられている場合は
null。または、ソケットがバインドされていないか、セキュリティ・マネージャのcheckConnectメソッドがこの操作を許可しない場合は、ワイルドカード・アドレスを表すInetAddress - 導入されたバージョン:
- 1.1
- 関連項目:
SecurityManager.checkConnect(java.lang.String, int)
-
getLocalPort
public int getLocalPort()
このソケットのバインド先となる、ローカル・ホスト上のポート番号を返します。- 戻り値:
- このソケットのバインド先となる、ローカル・ホスト上のポート番号。ソケットが閉じられている場合は
-1、まだバインドされていない場合は0。
-
setSoTimeout
public void setSoTimeout(int timeout) throws SocketException指定されたタイム・アウト(ミリ秒)を使ってSO_TIMEOUTを有効または無効にします。 このオプションにゼロ以外のタイム・アウトを設定した場合、このDatagramSocketに対してreceive()を呼び出すと、設定した時間だけブロックされます。 タイム・アウトの期限が切れると、DatagramSocketがまだ有効であってもjava.net.SocketTimeoutExceptionが発行されます。 このオプションは、ブロック処理に入る前に有効にしておく必要があります。 タイムアウトは0より大きい値を指定します。 タイム・アウト0は無限のタイム・アウトとして解釈されます。- パラメータ:
timeout- ミリ秒で表される、指定されたタイム・アウト。- 例外:
SocketException- 基本となるプロトコルでUDPエラーなどのエラーが発生した場合。- 導入されたバージョン:
- 1.1
- 関連項目:
getSoTimeout()
-
getSoTimeout
public int getSoTimeout() throws SocketExceptionSO_TIMEOUTの設定を取得します。このオプションが無効(タイム・アウトが無限)の場合は0を返します。- 戻り値:
- SO_TIMEOUTの設定
- 例外:
SocketException- 基本となるプロトコルでUDPエラーなどのエラーが発生した場合。- 導入されたバージョン:
- 1.1
- 関連項目:
setSoTimeout(int)
-
setSendBufferSize
public void setSendBufferSize(int size) throws SocketExceptionSO_SNDBUFオプションを、このDatagramSocketに指定された値に設定します。 SO_SNDBUFオプションは、使用するネットワーク入出力バッファのサイズを設定するヒントとして、ネットワーク実装が使います。 また、ネットワーク実装は、このソケットで送信できるパケットの最大サイズを判定するためにもSO_SNDBUF設定を使います。SO_SNDBUFはヒントなので、アプリケーションでバッファのサイズを調べる必要がある場合は、
getSendBufferSize()を呼び出すようにしてください。バッファ・サイズを大きくすると、送信速度が高い場合にネットワーク実装により複数の送信パケットをキューに入れることが可能になります。
注:
send(DatagramPacket)を使用してSO_SNDBUFの設定より大きいDatagramPacketを送信する場合、パケットが送信されるか破棄されるかは実装によって異なります。- パラメータ:
size- 送信バッファ・サイズの設定サイズ。 この値は0より大きくなければならない。- 例外:
SocketException- 基本となるプロトコルでUDPエラーなどのエラーが発生した場合。IllegalArgumentException- 値が0または負の値である場合。- 関連項目:
getSendBufferSize()
-
getSendBufferSize
public int getSendBufferSize() throws SocketExceptionこのDatagramSocketで使われるSO_SNDBUFオプションの値を取得します。これは、このDatagramSocketで出力用としてプラットフォームが使うバッファのサイズです。- 戻り値:
- この
DatagramSocketのSO_SNDBUFオプションの値 - 例外:
SocketException- 基本となるプロトコルでUDPエラーなどのエラーが発生した場合。- 関連項目:
setSendBufferSize(int)
-
setReceiveBufferSize
public void setReceiveBufferSize(int size) throws SocketExceptionSO_RCVBUFオプションを、このDatagramSocketに指定された値に設定します。 「SO_RCVBUF」オプションは、基本的なネットワークI/Oバッファのサイズを決定するためのヒントとして、ネットワーク実装で使用されます。 また、ネットワーク実装は、このソケットで受信できるパケットの最大サイズを判定するためにもSO_RCVBUF設定を使います。SO_RCVBUFはヒントなので、アプリケーションでバッファのサイズ設定を調べる必要がある場合は、
getReceiveBufferSize()を呼び出してください。SO_RCVBUFの値を大きくすると、
receive(DatagramPacket)を使用した受信より速くパケットが到達する場合に、ネットワーク実装による複数のパケットのバッファリングが可能になる場合があります。注: SO_RCVBUFより大きいパケットを受信できるかどうかは実装によって異なります。
- パラメータ:
size- 受信バッファ・サイズの設定サイズ。 この値は0より大きくなければならない。- 例外:
SocketException- 基本となるプロトコルでUDPエラーなどのエラーが発生した場合。IllegalArgumentException- 値が0または負の値である場合。- 関連項目:
getReceiveBufferSize()
-
getReceiveBufferSize
public int getReceiveBufferSize() throws SocketExceptionこのDatagramSocketで使われるSO_RCVBUFオプションの値を取得します。これは、このDatagramSocketで入力用としてプラットフォームが使うバッファのサイズです。- 戻り値:
- この
DatagramSocketのSO_RCVBUFオプションの値 - 例外:
SocketException- 基本となるプロトコルでUDPエラーなどのエラーが発生した場合。- 関連項目:
setReceiveBufferSize(int)
-
setReuseAddress
public void setReuseAddress(boolean on) throws SocketExceptionSO_REUSEADDRソケット・オプションを有効または無効にします。UDPソケットの場合、複数のソケットを同じソケット・アドレスにバインドすることが必要になることがあります。 マルチキャスト・パケットを受信するためには通常このようにします(
MulticastSocketを参照)。bind(SocketAddress)を使用してソケットをバインドする前にSO_REUSEADDRソケット・オプションが有効になっていれば、SO_REUSEADDRソケット・オプションを使って複数のソケットを同一のソケット・アドレスにバインドすることができます。注:この機能は、既存のすべてのプラットフォームでサポートされているわけではありません。したがって、このオプションが無視されるかどうかは実装によって異なります。 ただし、この機能がサポートされていない場合、
getReuseAddress()は常にfalseを返します。DatagramSocketが作成されると、SO_REUSEADDRの初期設定は無効になります。ソケットがバインドされた(
isBound()を参照)あとでSO_REUSEADDRを有効または無効にする場合の動作は定義されていません。- パラメータ:
on- 有効にするか無効にするかを指定- 例外:
SocketException-SO_RESUEADDRソケット・オプションの有効化または無効化時にエラーが発生した場合、またはソケットがクローズされている場合。- 導入されたバージョン:
- 1.4
- 関連項目:
getReuseAddress(),bind(SocketAddress),isBound(),isClosed()
-
getReuseAddress
public boolean getReuseAddress() throws SocketExceptionSO_REUSEADDRが有効かどうかを調べます。- 戻り値:
- SO_REUSEADDRが有効かどうかを示す
boolean値。 - 例外:
SocketException- 基本となるプロトコルでUDPエラーなどのエラーが発生した場合。- 導入されたバージョン:
- 1.4
- 関連項目:
setReuseAddress(boolean)
-
setBroadcast
public void setBroadcast(boolean on) throws SocketExceptionSO_BROADCASTを有効または無効にします。一部のオペレーティング・システムでは、このオプションを有効するため、つまりブロードキャスト・データグラムを送信するために、実装固有の特権でJava仮想マシンを起動する必要があります。
- パラメータ:
on- ブロードキャストをオンにするかどうかを指定。- 例外:
SocketException- 基本となるプロトコルでUDPエラーなどのエラーが発生した場合。- 導入されたバージョン:
- 1.4
- 関連項目:
getBroadcast()
-
getBroadcast
public boolean getBroadcast() throws SocketExceptionSO_BROADCASTが有効かどうかを調べます。- 戻り値:
- SO_BROADCASTが有効かどうかを示す
boolean値。 - 例外:
SocketException- 基本となるプロトコルでUDPエラーなどのエラーが発生した場合。- 導入されたバージョン:
- 1.4
- 関連項目:
setBroadcast(boolean)
-
setTrafficClass
public void setTrafficClass(int tc) throws SocketExceptionこのDatagramSocketから送信されるデータグラムのIPデータグラム・ヘッダーのトラフィック・クラスまたはサービス型octetを設定します。 使用するネットワーク実装がこの値を無視することがあるので、アプリケーションではこの値をヒントと考えてください。tcの範囲は
0 <= tc <= 255でなければいけません。そうでない場合は、IllegalArgumentExceptionがスローされます。注:
IP (Internet Protocol)バージョン4の場合、この値は
integerで構成され、最下位8ビットが、ソケットによって送信されたIPパケットのTOSオクテットの値を表します。 RFC 1349ではTOSの値は次のように定義されています。IPTOS_LOWCOST (0x02)IPTOS_RELIABILITY (0x04)IPTOS_THROUGHPUT (0x08)IPTOS_LOWDELAY (0x10)
優先フィールドにビットを設定すると、操作が許可されないことを示すSocketExceptionになることがあります。
IP (Internet Protocol)バージョン6の場合、
tcはIPヘッダーのsin6_flowinfoフィールドに格納される値です。- パラメータ:
tc- ビット・セットのint値。- 例外:
SocketException- トラフィック・クラスまたはサービス・タイプの設定時にエラーが発生した場合- 導入されたバージョン:
- 1.4
- 関連項目:
getTrafficClass()
-
getTrafficClass
public int getTrafficClass() throws SocketExceptionこのDatagramSocketから送信されるパケットのIPデータグラム・ヘッダーのトラフィック・クラスまたはサービス型を取得します。使用するネットワーク実装が、
setTrafficClass(int)を使用して設定されたトラフィック・クラスまたはサービス型を無視することがあるので、このDatagramSocketでsetTrafficClass(int)メソッドを使用して以前に設定された値とは異なる値がこのメソッドから返されることがあります。- 戻り値:
- すでに設定されているトラフィック・クラスまたはサービス型
- 例外:
SocketException- トラフィック・クラスまたはサービス・タイプの値を取得する際にエラーが発生した場合。- 導入されたバージョン:
- 1.4
- 関連項目:
setTrafficClass(int)
-
close
public void close()
このデータグラム・ソケットを閉じます。このソケットの
receive(java.net.DatagramPacket)で現在ブロックされているすべてのスレッドがSocketExceptionをスローします。このソケットに関連するチャネルが存在する場合は、そのチャネルも閉じられます。
- 定義:
close、インタフェース:AutoCloseable- 定義:
close、インタフェース:Closeable
-
isClosed
public boolean isClosed()
ソケットが閉じたかどうかを返します。- 戻り値:
- ソケットが閉じた場合はtrue
- 導入されたバージョン:
- 1.4
-
getChannel
public DatagramChannel getChannel()
このデータグラム・ソケットに付けられた一意のDatagramChannelオブジェクトを返します(存在する場合)。チャネル自体が
DatagramChannel.openメソッドを使用して作成された場合にだけ、データグラム・ソケットにチャネルが存在します。- 戻り値:
- このデータグラム・ソケットに関連するデータグラム・チャネル。このソケットがチャネル用に作成されなかった場合は
null - 導入されたバージョン:
- 1.4
-
setDatagramSocketImplFactory
public static void setDatagramSocketImplFactory(DatagramSocketImplFactory fac) throws IOException
アプリケーションのデータグラム・ソケット実装ファクトリを設定します。 ファクトリを指定できるのは一度だけです。アプリケーションで新しいデータグラム・ソケットを作成すると、ソケット実装ファクトリの
createDatagramSocketImplメソッドが呼び出され、実際のデータグラム・ソケット実装が作成されます。このメソッドに
nullを渡しても、ファクトリがすでに設定されていないかぎり、それは無操作になります。セキュリティ・マネージャが存在する場合、この操作が許可されるように、このメソッドは最初にセキュリティ・マネージャの
checkSetFactoryメソッドを呼び出します。 この結果、SecurityExceptionがスローされることがあります。- パラメータ:
fac- 目的のファクトリ。- 例外:
IOException−データグラム・ソケット・ファクトリの設定中に入出力エラーが発生した場合。SocketException- ファクトリがすでに定義されている場合。SecurityException- セキュリティ・マネージャが存在し、そのcheckSetFactoryメソッドでこの操作が許可されていない場合。- 導入されたバージョン:
- 1.3
- 関連項目:
DatagramSocketImplFactory.createDatagramSocketImpl(),SecurityManager.checkSetFactory()
-
setOption
public <T> DatagramSocket setOption(SocketOption<T> name, T value) throws IOException
ソケット・オプションの値を設定します。- 型パラメータ:
T- ソケット・オプション値のタイプ- パラメータ:
name- ソケット・オプションvalue- ソケット・オプションの値。nullの値は、一部のオプションで有効です。- 戻り値:
- このDatagramSocket
- 例外:
UnsupportedOperationException- データグラム・ソケットがオプションをサポートしていない場合。IllegalArgumentException- 値がオプションに対して有効でない場合。IOException- I/Oエラーが発生した場合、またはソケットが閉じられている場合。SecurityException- セキュリティ・マネージャが設定されていて、ソケット・オプションにセキュリティ許可が必要で、呼び出し元に必要な許可がない場合。StandardSocketOptionsはセキュリティ権限を必要としません。NullPointerException- nameがnullの場合- 導入されたバージョン:
- 9
-
getOption
public <T> T getOption(SocketOption<T> name) throws IOException
ソケット・オプションの値を返します。- 型パラメータ:
T- ソケット・オプション値のタイプ- パラメータ:
name- ソケット・オプション- 戻り値:
- ソケット・オプションの値。
- 例外:
UnsupportedOperationException- データグラム・ソケットがオプションをサポートしていない場合。IOException- I/Oエラーが発生した場合、またはソケットが閉じられている場合。NullPointerException- nameがnullの場合SecurityException- セキュリティ・マネージャが設定されていて、ソケット・オプションにセキュリティ許可が必要で、呼び出し元に必要な許可がない場合。StandardSocketOptionsはセキュリティ権限を必要としません。- 導入されたバージョン:
- 9
-
supportedOptions
public Set<SocketOption<?>> supportedOptions()
このソケットでサポートされているソケット・オプションのセットを返します。 このメソッドは、ソケットが閉じられた後も引き続き一連のオプションを返します。- 戻り値:
- このソケットでサポートされているソケット・オプションのセット。 ソケットDatagramSocketImplを作成できない場合、このセットは空の場合があります。
- 導入されたバージョン:
- 9
-
-