|
Java プラットフォーム 1.2 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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()
このソケットが使う SO_RCVBUF オプションの値を取得します。 |
int |
getSendBufferSize()
このソケットが使う SO_SNDBUF オプションの値を取得します。 |
int |
getSoTimeout()
SO_TIMEOUT の設定を取得します。 |
void |
receive(DatagramPacket p)
このソケットからのデータグラムパケットを受信します。 |
void |
send(DatagramPacket p)
このソケットからデータグラムパケットを送信します。 |
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 になることがあります。
checkListen
メソッドがこの操作を許可しない場合SecurityManager.checkListen(int)
public DatagramSocket(int port) throws SocketException
セキュリティマネージャが存在する場合、まずセキュリティマネージャの checkListen
メソッドが引数として port
を指定して呼び出され、この操作が許可されていることを確認します。この結果、SecurityException になることがあります。
port
- 使用するポートcheckListen
メソッドがこの操作を許可しない場合SecurityManager.checkListen(int)
public DatagramSocket(int port, InetAddress laddr) throws SocketException
セキュリティマネージャが存在する場合、まずセキュリティマネージャの checkListen
メソッドが引数として port
を指定して呼び出され、この操作が許可されていることを確認します。この結果、SecurityException になることがあります。
port
- 使用するローカルポートladdr
- バインド先のローカルアドレスcheckListen
メソッドがこの操作を許可しない場合SecurityManager.checkListen(int)
メソッドの詳細 |
public void connect(InetAddress address, int port)
指定されたホストおよびポート番号と送受信を行うための呼び出し側のアクセス権は、接続時に確認されます。ソケットが接続されたとき、送受信ではパケットの受信および送信に対するセキュリティチェックを行いません。ただし、パケットとソケットのアドレスおよびポート番号が一致するかどうかの確認は行います。送信の処理では、パケットのアドレスが設定されている場合に、パケットのアドレスとソケットのアドレスが一致しないときは、IllegalArgumentException がスローされます。マルチキャストアドレスに接続されているソケットは、送信パケットだけに使用できます。
address
- ソケットが使うリモートアドレスport
- ソケットが使うリモートポート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
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
DatagramPacket
,
DatagramSocket
public InetAddress getLocalAddress()
checkConnect
メソッドが、引数としてホストアドレスおよび -1
を指定して呼び出され、この操作が許可されているかどうかを確認します。checkConnect
メソッドがこの操作を許可しない場合SecurityManager.checkConnect(java.lang.String, int)
public int getLocalPort()
public void setSoTimeout(int timeout) throws SocketException
public int getSoTimeout() throws SocketException
public void setSendBufferSize(int size) throws SocketException
バッファのサイズを増やすと、大規模な接続でのネットワーク入出力のパフォーマンスを上げることができます。一方、サイズを減らすと、受信データのバックログを減らすことができます。UDP の場合は、この値により、このソケットを通じて送信されるパケットの最大サイズが設定されます。
SO_SNDBUF はヒントなので、アプリケーションでバッファのサイズ設定を調べる必要がある場合は、IllegalArgumentException - 値が 0 または負の値である場合
public int getSendBufferSize() throws SocketException
setSendBufferSize(int)
public void setReceiveBufferSize(int size) throws SocketException
バッファのサイズを増やすと、大規模な接続でのネットワーク入出力のパフォーマンスを上げることができます。一方、サイズを減らすと、受信データのバックログを減らすことができます。UDP の場合は、この値により、このソケットを通じて送信されるパケットの最大サイズが設定されます。
SO_RCVBUF はヒントなので、アプリケーションでバッファのサイズ設定を調べる必要がある場合は、getReceiveBufferSize を呼び出してください。
size
- 受信バッファに設定するサイズ。0 より大きい値を指定する必要があるpublic int getReceiveBufferSize() throws SocketException
setReceiveBufferSize(int)
public void close()
|
Java プラットフォーム 1.2 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |