JavaTM Platform
Standard Ed. 6

java.net
クラス DatagramSocket

java.lang.Object
  上位を拡張 java.net.DatagramSocket
直系の既知のサブクラス:
MulticastSocket

public class DatagramSocket
extends Object

このクラスは、データグラムパケットを送受信するためのソケットを表します。  

データグラムソケットは、パケット配信サービスの送信点または受信点です。データグラムソケット上で送信または受信する各パケットは、それぞれ異なるアドレスで経路を指定されます。あるマシンから別のマシンに複数のパケットを送信する場合、各パケットは異なる経路で送信される可能性があり、宛先には任意の順序で到達する可能性があります。  

UDP ブロードキャストの送信は、DatagramSocket 上で常に有効になっています。ブロードキャストパケットを受信するときは、DatagramSocket をワイルドカードアドレスにバインドするようにしてください。実装によっては、DatagramSocket が特定のアドレスにバインドされていてもブロードキャストパケットを受信する場合もあります。

例:DatagramSocket s = new DatagramSocket(null); s.bind(new InetSocketAddress(8888));。これは、DatagramSocket s = new DatagramSocket(8888); と同等です。どちらの方法でも、UDP ポート 8888 上でブロードキャストを受信する DatagramSocket を作成できます。

導入されたバージョン:
JDK1.0
関連項目:
DatagramPacket, DatagramChannel

コンストラクタの概要
  DatagramSocket()
          データグラムソケットを構築し、ローカルホストマシン上の使用可能なポートにバインドします。
protected DatagramSocket(DatagramSocketImpl impl)
          指定された DatagramSocketImpl を使用してバインドされていないデータグラムソケットを作成します。
  DatagramSocket(int port)
          データグラムソケットを構築し、ローカルホストマシン上の指定されたポートにバインドします。
  DatagramSocket(int port, InetAddress laddr)
          指定されたローカルアドレスにバインドされたデータグラムソケットを作成します。
  DatagramSocket(SocketAddress bindaddr)
          指定されたローカルアドレスにバインドされたデータグラムソケットを作成します。
 
メソッドの概要
 void bind(SocketAddress addr)
          この DatagramSocket を特定のアドレスおよびポートにバインドします。
 void close()
          このデータグラムソケットを閉じます。
 void connect(InetAddress address, int port)
          ソケットをこのソケットのリモートアドレスに接続します。
 void connect(SocketAddress addr)
          このソケットをリモートソケットアドレス (IP アドレス + ポート番号) に接続します。
 void disconnect()
          ソケットを切断します。
 boolean getBroadcast()
          SO_BROADCAST が有効かどうかを調べます。
 DatagramChannel getChannel()
          このデータグラムソケットに関連する固有の DatagramChannel オブジェクトを返します (存在する場合)。
 InetAddress getInetAddress()
          このソケットの接続先のアドレスを返します。
 InetAddress getLocalAddress()
          ソケットのバインド先のローカルアドレスを取得します。
 int getLocalPort()
          このソケットのバインド先となる、ローカルホスト上のポート番号を返します。
 SocketAddress getLocalSocketAddress()
          このソケットがバインドされている端点のアドレスを返します。
 int getPort()
          このソケットのためのポートを返します。
 int getReceiveBufferSize()
          この DatagramSocket で使われる SO_RCVBUF オプションの値を取得します。
 SocketAddress getRemoteSocketAddress()
          このソケットが接続されている端点のアドレスを返します。
 boolean getReuseAddress()
          SO_REUSEADDR が有効かどうかを調べます。
 int getSendBufferSize()
          この DatagramSocket で使われる SO_SNDBUF オプションの値を取得します。
 int getSoTimeout()
          SO_TIMEOUT の設定を取得します。
 int getTrafficClass()
          この DatagramSocket から送信されるパケットの IP データグラムヘッダーのトラフィッククラスまたはサービス型を取得します。
 boolean isBound()
          ソケットのバインディング状態を返します。
 boolean isClosed()
          ソケットが閉じたかどうかを返します。
 boolean isConnected()
          ソケットの接続状態を返します。
 void receive(DatagramPacket p)
          このソケットからのデータグラムパケットを受信します。
 void send(DatagramPacket p)
          このソケットからデータグラムパケットを送信します。
 void setBroadcast(boolean on)
          SO_BROADCAST を有効または無効にします。
static void setDatagramSocketImplFactory(DatagramSocketImplFactory fac)
          アプリケーションのデータグラムソケット実装ファクトリを設定します。
 void setReceiveBufferSize(int size)
          SO_RCVBUF オプションを、この DatagramSocket に指定された値に設定します。
 void setReuseAddress(boolean on)
          SO_REUSEADDR ソケットオプションを有効または無効にします。
 void setSendBufferSize(int size)
          SO_SNDBUF オプションを、この DatagramSocket に指定された値に設定します。
 void setSoTimeout(int timeout)
          指定されたタイムアウト (ミリ秒) を使って SO_TIMEOUT を有効または無効にします。
 void setTrafficClass(int tc)
          この DatagramSocket から送信されるデータグラムの IP データグラムヘッダーのトラフィッククラスまたはサービス型 octet を設定します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

DatagramSocket

public DatagramSocket()
               throws SocketException
データグラムソケットを構築し、ローカルホストマシン上の使用可能なポートにバインドします。ソケットはワイルドカードアドレス (カーネルによって選択された任意の 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
データグラムソケットを構築し、ローカルホストマシン上の指定されたポートにバインドします。ソケットはワイルドカードアドレス (カーネルによって選択された任意の 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 メソッドがこの操作を許可しない場合
導入されたバージョン:
JDK1.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 がスローされることがあります。例外が必ずスローされるとは限らないことに注意  

指定されたホストおよびポートとのデータグラムの送受信を行うための呼び出し側のアクセス権は、接続時に確認されます。ソケットが接続されたとき、送受信ではパケットの受信および送信に対するセキュリティーチェックを行いません。ただし、パケットとソケットのアドレスおよびポートが一致するかどうかの確認は行います。送信の処理では、パケットのアドレスが設定されている場合に、パケットのアドレスとソケットのアドレスが一致しないときは、IllegalArgumentException がスローされます。マルチキャストアドレスに接続されているソケットは、送信パケットだけに使用できます。

パラメータ:
address - ソケットが使うリモートアドレス
port - ソケットが使うリモートポート
例外:
IllegalArgumentException - アドレスが null である場合、またはポートが範囲外の場合
SecurityException - 指定されたアドレスおよびポートとのデータグラムの送受信が、呼び出し側に許可されていない場合
関連項目:
disconnect(), send(java.net.DatagramPacket), receive(java.net.DatagramPacket)

connect

public void connect(SocketAddress addr)
             throws SocketException
このソケットをリモートソケットアドレス (IP アドレス + ポート番号) に接続します。

パラメータ:
addr - リモートアドレス
例外:
SocketException - 接続に失敗した場合
IllegalArgumentException - addr が null である場合、または addr がこのソケットでサポートされていない SocketAddress サブクラスである場合
導入されたバージョン:
1.4
関連項目:
connect(java.net.InetAddress, int)

disconnect

public void disconnect()
ソケットを切断します。ソケットが接続されていない場合は、何も行いません。

関連項目:
connect(java.net.InetAddress, int)

isBound

public boolean isBound()
ソケットのバインディング状態を返します。

戻り値:
ソケットが正常にアドレスにバインドされている場合は true
導入されたバージョン:
1.4

isConnected

public boolean isConnected()
ソケットの接続状態を返します。

戻り値:
ソケットがサーバーに正常に接続されている場合は 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()
このソケットがバインドされている端点のアドレスを返します。ソケットがバインドされていない場合は null を返します。

戻り値:
このソケットのローカル端点を表す 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 - ソケットに関連したチャネルが存在し、そのチャネルが非ブロックモードの場合
関連項目:
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 を引数として呼び出され、操作が許可されるかどうかが確認されます。

戻り値:
ソケットのバインド先のローカルアドレス。ソケットがバインドされないか、またはセキュリティーマネージャーの checkConnect メソッドがこの操作を許可しない場合は、任意のローカルアドレスを表す InetAddress
導入されたバージョン:
1.1
関連項目:
SecurityManager.checkConnect(java.lang.String, int)

getLocalPort

public int getLocalPort()
このソケットのバインド先となる、ローカルホスト上のポート番号を返します。

戻り値:
このソケットのバインド先となる、ローカルホスト上のポート番号

setSoTimeout

public void setSoTimeout(int timeout)
                  throws SocketException
指定されたタイムアウト (ミリ秒) を使って SO_TIMEOUT を有効または無効にします。このオプションにゼロ以外の待ち時間を設定した場合、この DatagramSocket に対して receive() を呼び出すと、設定した時間だけブロックされます。タイムアウトの期限が切れると、DatagramSocket がまだ有効であっても java.net.SocketTimeoutException が発行されます。このオプションは、ブロック処理に入る前に有効にしておく必要があります。タイムアウトは 0 より大きい値を指定します。 タイムアウト 0 は無限のタイムアウトとして解釈されます。

パラメータ:
timeout - ミリ秒で表される、指定された待ち時間
例外:
SocketException - 基本となるプロトコルで UDP エラーなどのエラーが発生した場合
導入されたバージョン:
JDK1.1
関連項目:
getSoTimeout()

getSoTimeout

public int getSoTimeout()
                 throws SocketException
SO_TIMEOUT の設定を取得します。このオプションが無効 (タイムアウトが無限) の場合は 0 を返します。

戻り値:
SO_TIMEOUT の設定
例外:
SocketException - 基本となるプロトコルで UDP エラーなどのエラーが発生した場合
導入されたバージョン:
JDK1.1
関連項目:
setSoTimeout(int)

setSendBufferSize

public void setSendBufferSize(int size)
                       throws SocketException
SO_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 SocketException
SO_RCVBUF オプションを、この DatagramSocket に指定された値に設定します。SO_RCVBUF オプションは、使用するネットワーク入出力バッファーのサイズを設定するヒントとして、ネットワーク実装が使います。また、ネットワーク実装は、このソケットで受信できるパケットの最大サイズを判定するためにも 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 SocketException
SO_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 SocketException
SO_REUSEADDR が有効かどうかを調べます。

戻り値:
SO_REUSEADDR が有効かどうかを示す boolean
例外:
SocketException - 基本となるプロトコルで UDP エラーなどのエラーが発生した場合
導入されたバージョン:
1.4
関連項目:
setReuseAddress(boolean)

setBroadcast

public void setBroadcast(boolean on)
                  throws SocketException
SO_BROADCAST を有効または無効にします。

パラメータ:
on - ブロードキャストをオンにするかどうかを指定
例外:
SocketException - 基本となるプロトコルで UDP エラーなどのエラーが発生した場合
導入されたバージョン:
1.4
関連項目:
getBroadcast()

getBroadcast

public boolean getBroadcast()
                     throws SocketException
SO_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) Version 4 の場合、RFC 1349 で説明されているように、この値は優先度の高い octet と TOS フィールドで構成されます。TOS フィールドは、次のようにビット単位の論理和によって作成されるビットセットです。

最下位ビットは、MBZ (0 でなければならない) ビットに対応するので、常に無視されます。

優先フィールドにビットを設定すると、操作が許可されないことを示す SocketException になることがあります。

IP (Internet Protocol) Version 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 をスローします。  

このソケットに関連するチャネルが存在する場合は、そのチャネルも閉じられます。


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

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。