|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.net.DatagramSocket
このクラスは、データグラムを送受信するためのソケットを表します。
データグラムソケットは、パケット配信サービスの送信点または受信点です。データグラムソケット上で送信または受信する各パケットは、それぞれ異なるアドレスで経路を指定されます。あるマシンから別のマシンに複数のパケットを送信する場合、各パケットは異なる経路で送信される可能性があり、宛先には任意の順序で到達する可能性があります。
UDP ブロードキャストの送信および受信は、DatagramSocket 上で常に有効になっています。
DatagramPacket
コンストラクタの概要 | |
DatagramSocket()
データグラムソケットを構築し、ローカルホストマシン上の使用可能なポートにバインドします。 |
|
DatagramSocket(int port)
データグラムソケットを構築し、ローカルホストマシン上の指定されたポートにバインドします。 |
|
DatagramSocket(int port,
InetAddress laddr)
指定されたローカルアドレスにバインドされたデータグラムソケットを作成します。 |
メソッドの概要 | |
void |
close()
このデータグラムソケットを閉じます。 |
void |
connect(InetAddress address,
int port)
このソケットのリモートアドレスに、ソケットを接続します。 |
void |
disconnect()
ソケットを切断します。 |
InetAddress |
getInetAddress()
ソケットが接続されているアドレスを返します。 |
InetAddress |
getLocalAddress()
ソケットのバインド先のローカルアドレスを取得します。 |
int |
getLocalPort()
このソケットのバインド先となる、ローカルホスト上のポート番号を返します。 |
int |
getPort()
このソケットのためのポートを返します。 |
int |
getReceiveBufferSize()
この DatagramSocket で使われる SO_RCVBUF オプションの値を取得します。 |
int |
getSendBufferSize()
この DatagramSocket で使われる SO_SNDBUF オプションの値を取得します。 |
int |
getSoTimeout()
SO_TIMEOUT の設定を取得します。 |
void |
receive(DatagramPacket p)
このソケットからのデータグラムパケットを受信します。 |
void |
send(DatagramPacket p)
このソケットからデータグラムパケットを送信します。 |
static void |
setDatagramSocketImplFactory(DatagramSocketImplFactory fac)
アプリケーションのデータグラムソケット実装ファクトリを設定します。 |
void |
setReceiveBufferSize(int size)
SO_RCVBUF オプションを、この DatagramSocket に指定された値に設定します。 |
void |
setSendBufferSize(int size)
SO_SNDBUF オプションを、この DatagramSocket に指定された値に設定します。 |
void |
setSoTimeout(int timeout)
指定された待ち時間 (ミリ秒単位) を使用して、SO_TIMEOUT を有効または無効にします。 |
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
public DatagramSocket() throws SocketException
セキュリティマネージャが存在する場合、まずセキュリティマネージャの checkListen
が、引数として 0 を指定して呼び出され、この操作が許可されていることを確認します。この結果、SecurityException になることがあります。
SocketException
- ソケットを開くことができなかった場合、あるいは指定されたローカルポートにソケットをバインドできなかった場合SecurityException
- セキュリティマネージャが存在し、セキュリティマネージャの checkListen
メソッドがこの操作を許可しない場合SecurityManager.checkListen(int)
public DatagramSocket(int port) throws SocketException
セキュリティマネージャが存在する場合、まずセキュリティマネージャの checkListen
メソッドが、引数として port
を指定して呼び出され、この操作が許可されていることを確認します。この結果、SecurityException になることがあります。
port
- 使用するポートSocketException
- ソケットを開くことができなかった場合、あるいは指定されたローカルポートにソケットをバインドできなかった場合SecurityException
- セキュリティマネージャが存在し、セキュリティマネージャの checkListen
メソッドがこの操作を許可しない場合SecurityManager.checkListen(int)
public DatagramSocket(int port, InetAddress laddr) throws SocketException
セキュリティマネージャが存在する場合、まずセキュリティマネージャの checkListen
メソッドが、引数として port
を指定して呼び出され、この操作が許可されていることを確認します。この結果、SecurityException になることがあります。
port
- 使用するローカルポートladdr
- バインド先のローカルアドレスSocketException
- ソケットを開くことができなかった場合、あるいは指定されたローカルポートにソケットをバインドできなかった場合SecurityException
- セキュリティマネージャが存在し、セキュリティマネージャの checkListen
メソッドがこの操作を許可しない場合SecurityManager.checkListen(int)
メソッドの詳細 |
public void connect(InetAddress address, int port)
指定されたホストおよびポートとのデータグラムの送受信を行うための呼び出し側のアクセス権は、接続時に確認されます。ソケットが接続されたとき、送受信ではパケットの受信および送信に対するセキュリティチェックを行いません。ただし、パケットとソケットのアドレスおよびポートが一致するかどうかの確認は行います。送信の処理では、パケットのアドレスが設定されている場合に、パケットのアドレスとソケットのアドレスが一致しないときは、IllegalArgumentException がスローされます。マルチキャストアドレスに接続されているソケットは、送信パケットだけに使用できます。
address
- ソケットが使うリモートアドレスport
- ソケットが使うリモートポートIllegalArgumentException
- アドレスが無効である場合、あるいはポートが範囲外の場合SecurityException
- 指定されたアドレスおよびポートとのデータグラムの送受信が、呼び出し側に許可されていない場合disconnect()
,
send(java.net.DatagramPacket)
,
receive(java.net.DatagramPacket)
public void disconnect()
connect(java.net.InetAddress, int)
public InetAddress getInetAddress()
public int getPort()
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
が送信を許可しない場合DatagramPacket
,
SecurityManager.checkMulticast(InetAddress)
,
SecurityManager.checkConnect(java.lang.String, int)
public void receive(DatagramPacket p) throws IOException
DatagramPacket
のバッファには受信したデータが格納されます。データグラムパケットには、送信者の IP アドレスと、送信者のマシンのポート番号も格納されています。
このメソッドは、データグラムが受信されるまでブロックしています。データグラムパケットオブジェクトの length
フィールドは、受信されるメッセージの長さの情報を含んでいます。メッセージがパケットよりも長い場合、メッセージはパケットの長さに切りつめられます。
セキュリティマネージャが存在する場合、セキュリティマネージャの checkAccept
メソッドがパケットの受信を許可しないときは、パケットの受信は行われません。
p
- 受信したデータを保存する DatagramPacket
IOException
- 入出力エラーが発生した場合DatagramPacket
,
DatagramSocket
public InetAddress getLocalAddress()
セキュリティマネージャが存在する場合、まずセキュリティマネージャの checkConnect
メソッドが、引数としてホストアドレスおよび -1
を指定して呼び出され、この操作が許可されているかどうかを確認します。
SecurityException
- セキュリティマネージャが存在し、セキュリティマネージャの checkConnect
メソッドがこの操作を許可しない場合SecurityManager.checkConnect(java.lang.String, int)
public int getLocalPort()
public void setSoTimeout(int timeout) throws SocketException
timeout
- ミリ秒で表される、指定された待ち時間SocketException
- 使用しているプロトコルで TCP エラーなどのエラーが発生した場合getSoTimeout()
public int getSoTimeout() throws SocketException
SocketException
- 使用しているプロトコルで TCP エラーなどのエラーが発生した場合setSoTimeout(int)
public void setSendBufferSize(int size) throws SocketException
バッファのサイズを増やすと、大規模な接続でのネットワーク入出力のパフォーマンスを上げることができます。一方、サイズを減らすと、受信データのバックログを減らすことができます。UDP の場合は、この値により、このソケットを通じて送信されるパケットの最大サイズが設定されます。
SO_SNDBUF はヒントなので、アプリケーションでバッファのサイズ設定を調べる必要がある場合は、getSendBufferSize()
を呼び出してください。
size
- 送信バッファ用として設定するサイズ。0 より大きい値を指定する必要があるSocketException
- 使用しているプロトコルで TCP エラーなどのエラーが発生した場合IllegalArgumentException
- 値が 0 または負の値である場合getSendBufferSize()
public int getSendBufferSize() throws SocketException
SocketException
- 使用しているプロトコルで TCP エラーなどのエラーが発生した場合setSendBufferSize(int)
public void setReceiveBufferSize(int size) throws SocketException
バッファのサイズを増やすと、大規模な接続でのネットワーク入出力のパフォーマンスを上げることができます。一方、サイズを減らすと、受信データのバックログを減らすことができます。UDP の場合は、この値により、この DatagramSocket を通じて送信されるパケットの最大サイズが設定されます。
SO_RCVBUF はヒントなので、アプリケーションでバッファのサイズ設定を調べる必要がある場合は、getReceiveBufferSize()
を呼び出してください。
size
- 受信バッファ用として設定するサイズ。0 より大きい値を指定する必要があるSocketException
- 使用しているプロトコルで TCP エラーなどのエラーが発生した場合IllegalArgumentException
- 値が 0 または負の値である場合getReceiveBufferSize()
public int getReceiveBufferSize() throws SocketException
SocketException
- 使用しているプロトコルで TCP エラーなどのエラーが発生した場合setReceiveBufferSize(int)
public void close()
public static void setDatagramSocketImplFactory(DatagramSocketImplFactory fac) throws IOException
アプリケーションで新しいデータグラムソケットを作成すると、ソケット実装ファクトリの createDatagramSocketImpl
メソッドが呼び出され、実際のデータグラムソケット実装が作成されます。
セキュリティマネージャが存在する場合、このメソッドはまずセキュリティマネージャの checkSetFactory
メソッドを呼び出すことにより、この操作が許可されていることを確認します。この結果、SecurityException になることがあります。
fac
- 目的のファクトリIOException
- データグラムソケットファクトリの設定中に入出力エラーが発生した場合SocketException
- ファクトリがすでに定義されている場合SecurityException
- セキュリティマネージャが存在し、セキュリティマネージャの checkSetFactory
メソッドがこの操作を許可しない場合DatagramSocketImplFactory.createDatagramSocketImpl()
,
SecurityManager.checkSetFactory()
|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.