JavaTM 2
Platform
Std. Ed. v1.4.0

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, int), 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 の場合、このメソッドはセキュリティマネージャの checkMulticast メソッドを、引数として p.getAddress() を指定して呼び出します。上記の式の結果が 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 より大きい値を指定します。待ち時間にゼロを指定すると、待ち時間は無限と解釈されます。

パラメータ:
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() を使用して 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() を使用した受信より速くパケットが到達する場合に、ネットワーク実装による複数のパケットのバッファリングが可能になる場合があります。

注: 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 ソケットの場合、複数のソケットを同じソケットアドレスにバインドすることが必要になることがあります。マルチキャストパケットを受信するためには通常このようにします (#java.net.MulticastSocket を参照)。bind(SocketAddress) を使用してソケットをバインドする前に SO_REUSEADDR ソケットオプションが有効になっていれば、SO_REUSEADDR ソケットオプションを使って複数のソケットを同一のソケットアドレスにバインドすることができます。

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

  • IPTOS_LOWCOST (0x02)
  • IPTOS_RELIABILITY (0x04)
  • IPTOS_THROUGHPUT (0x08)
  • IPTOS_LOWDELAY (0x10)
最下位ビットは、MBZ (0 でなければならない) ビットに対応するので、常に無視されます。

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

IP (Internet Protocol) バージョン 6 の場合、tc は IP ヘッダの sin6_flowinfo フィールドに格納される値です。

パラメータ:
tc - ビットセットの int
例外:
SocketException - トラフィッククラスまたはサービスタイプを設定するときにエラーが発生した場合
導入されたバージョン:
1.4
関連項目:
getTrafficClass()

getTrafficClass

public int getTrafficClass()
                    throws SocketException
この DatagramSocket から送信されるパケットの IP データグラムヘッダのトラフィッククラスまたはサービスタイプを取得します。

使用するネットワーク実装が、#setTrafficClass() を使用して設定されたトラフィッククラスまたはサービスタイプを無視することがあるので、この DatagramSocket で #setTrafficClass() メソッドを使用して以前に設定された値とは異なる値がこのメソッドから返されることがあります。

戻り値:
すでに設定されているトラフィッククラスまたはサービスタイプ
例外:
SocketException - トラフィッククラスまたはサービスタイプ値を取得するときにエラーが発生した場合
導入されたバージョン:
1.4
関連項目:
setTrafficClass(int)

close

public void close()
このデータグラムソケットを閉じます。

現在このソケットの {#link receive} でブロックされているすべてのスレッドが 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
アプリケーションのデータグラムソケット実装ファクトリを設定します。ファクトリを設定できるのは 1 回だけです。

アプリケーションで新しいデータグラムソケットを作成すると、ソケット実装ファクトリの createDatagramSocketImpl メソッドが呼び出され、実際のデータグラムソケット実装が作成されます。

セキュリティマネージャが存在する場合、このメソッドは最初にセキュリティマネージャの checkSetFactory メソッドを呼び出すことにより、この操作が許可されていることを確認します。この結果、SecurityException になることがあります。

パラメータ:
fac - 目的のファクトリ
例外:
IOException - データグラムソケットファクトリの設定中に入出力エラーが発生した場合
SocketException - ファクトリがすでに定義されている場合
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkSetFactory メソッドがこの操作を許可しない場合
関連項目:
DatagramSocketImplFactory.createDatagramSocketImpl(), SecurityManager.checkSetFactory()

JavaTM 2
Platform
Std. Ed. v1.4.0

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

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.