UDP通信を行うためには、まずデータを用意し、このデータと送信先をDatagramPacketに詰めて、DatagramSocket
から相手に送信します。受信する側は空のDatagramPacketをつくり、DatagramSocketを用いて受信します。もう少し詳しく
説明すると下記のようになります。
メソッド |
InetAddress |
getAddress()
|
- 送信用DatagramPacketの場合は送信先のアドレスを返します。
- 受信用DatagramPacketの場合は送信元のアドレスを返します。
- 受信用DatagramPacketで、またデータを受信していない場合にはnullが返されます。
|
|
int |
getPort()
|
- 送信用DatagramPacketの場合は送信先のポート番号を返します。
- 受信用DatagramPacketの場合は送信元のポート番号を返します。
- 受信用DatagramPacketで、またデータを受信していない場合には-1が返されます。
|
|
int |
getLength()
|
byte[] |
getData()
|
void |
setAddress(InetAddress address)
|
void |
setPort(int port)
|
void |
setLength(int len)
|
void |
setData(byte[] buffer)
|
- 送信または受信バッファを設定します。データのサイズはbuffer.lengthに自動的に設定されます。
|
|
メソッド |
void |
connect(InetAddress address, int port)
|
void |
disconnect(InetAddress address, int port)
|
- ソケットを切断します。
- コネクトしていない場合は何もしません。
|
|
InetAddress |
getInetAddress()
|
InetAddress |
getLocalAddress()
|
int |
getPort()
|
- 接続先のポートの番号を返します。
- まだ接続されていない場合は0が返ります。
|
|
int |
getLocalPort()
|
- ローカルのポートの番号を返します。
- まだバインドされていない場合は-1が返ります。
|
|
int |
getSoTimeout() throws SocketException
|
- receiveメソッドのタイムアウト時間を取得します。
- setSoTimeoutでタイムアウトを設定していない場合には0が返ります。
- ソケットエラーの場合はSocketExceptionが投げられます。
|
|
void |
setSoTimeout(int msec) throws SocketException
|
- receiveメソッドのタイムアウト時間を設定します。
- タイムアウトを設定せず無限に待つ場合には0を設定します。
- 実際に正確にmsecで設定した値となるかは保証されません。例えばWindowsではOS自体が10ミリ秒単位でしかカウントしていないため、例えば8を与えても実際は10ミリ秒となります。
- ソケットエラーの場合はSocketExceptionが投げられます。
|
|
void |
receive(DatagramPacket packet) throws IOException
|
- データを受信し、受信したデータをpacketに詰めます。
- 受信するデータがない場合には、ブロックされます。
- 送信されたデータよりも、受信するpacket内のバッファの方が小さい場合は、データが取りこぼされます。
- 入出力エラーにはIOExceptionが投げられます。
- setSoTimeoutでタイムアウト時間を設定している場合で、そのタイムアウト時間になった場合はJavaのバージョンによって異なりますが、InterruptedIOExceptionやSocketTimeoutExceptionが投げられます。
|
|
void |
send(DatagramPacket packet) throws IOException
|