Java Platform 1.2
Beta 4

Class java.net.DatagramSocket

java.lang.Object
  |
  +--java.net.DatagramSocket
Direct Known Subclasses:
MulticastSocket

public class DatagramSocket
extends Object
This class represents a socket for sending and receiving datagram packets.

A datagram socket is the sending or receiving point for a packet delivery service. Each packet sent or received on a datagram socket is individually addressed and routed. Multiple packets sent from one machine to another may be routed differently, and may arrive in any order.

UDP broadcasts sends and receives are always enabled on a DatagramSocket.

Since:
JDK1.0
See Also:
DatagramPacket

Constructor Summary
DatagramSocket()
          Constructs a datagram socket and binds it to any available port on the local host machine.
DatagramSocket(int port, InetAddress laddr)
          Creates a datagram socket, bound to the specified local address.
DatagramSocket(int port)
          Constructs a datagram socket and binds it to the specified port on the local host machine.
 
Method Summary
 void close()
          Closes this datagram socket.
 InetAddress getLocalAddress()
          Gets the local address to which the socket is bound.
 int getLocalPort()
          Returns the port number on the local host to which this socket is bound.
 int getReceiveBufferSize()
          Get value of the SO_RCVBUF option for this socket, that is the buffer size used by the platform for input on the this Socket.
 int getSendBufferSize()
          Get value of the SO_SNDBUF option for this socket, that is the buffer size used by the platform for output on the this Socket.
 int getSoTimeout()
          Retrive setting for SO_TIMEOUT. 0 returns implies that the option is disabled (i.e.
 void receive(DatagramPacket p)
          Receives a datagram packet from this socket.
 void send(DatagramPacket p)
          Sends a datagram packet from this socket.
 void setReceiveBufferSize(int size)
          Sets the SO_RCVBUF option to the specified value for this DatagramSocket.
 void setSendBufferSize(int size)
          Sets the SO_SNDBUF option to the specified value for this DatagramSocket.
 void setSoTimeout(int timeout)
          Enable/disable SO_TIMEOUT with the specified timeout, in milliseconds.
 
Methods inherited from class java.lang.Object
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

Constructor Detail

DatagramSocket

public DatagramSocket()
               throws SocketException
Constructs a datagram socket and binds it to any available port on the local host machine.
Throws:
SocketException - if the socket could not be opened, or the socket could not bind to the specified local port.

DatagramSocket

public DatagramSocket(int port)
               throws SocketException
Constructs a datagram socket and binds it to the specified port on the local host machine.
Parameters:
local - port to use.
Throws:
SocketException - if the socket could not be opened, or the socket could not bind to the specified local port.

DatagramSocket

public DatagramSocket(int port,
                      InetAddress laddr)
               throws SocketException
Creates a datagram socket, bound to the specified local address. The local port must be between 0 and 65535 inclusive.
Parameters:
port - local port to use
laddr - local address to bind
Since:
JDK1.1
Method Detail

send

public void send(DatagramPacket p)
          throws IOException
Sends a datagram packet from this socket. The DatagramPacket includes information indicating the data to be sent, its length, the IP address of the remote host, and the port number on the remote host.
Parameters:
p - the DatagramPacket to be sent.
Throws:
IOException - if an I/O error occurs.
See Also:
DatagramPacket

receive

public void receive(DatagramPacket p)
             throws IOException
Receives a datagram packet from this socket. When this method returns, the DatagramPacket's buffer is filled with the data received. The datagram packet also contains the sender's IP address, and the port number on the sender's machine.

This method blocks until a datagram is received. The length field of the datagram packet object contains the length of the received message. If the message is longer than the packet's length, the message is truncated.

Parameters:
p - the DatagramPacket into which to place the incoming data.
Throws:
IOException - if an I/O error occurs.
See Also:
DatagramPacket, DatagramSocket

getLocalAddress

public InetAddress getLocalAddress()
Gets the local address to which the socket is bound.
Since:
1.1

getLocalPort

public int getLocalPort()
Returns the port number on the local host to which this socket is bound.
Returns:
the port number on the local host to which this socket is bound.

setSoTimeout

public void setSoTimeout(int timeout)
                  throws SocketException
Enable/disable SO_TIMEOUT with the specified timeout, in milliseconds. With this option set to a non-zero timeout, a call to receive() for this DatagramSocket will block for only this amount of time. If the timeout expires, a java.io.InterruptedIOException is raised, though the ServerSocket is still valid. The option must be enabled prior to entering the blocking operation to have effect. The timeout must be > 0. A timeout of zero is interpreted as an infinite timeout.
Since:
JDK1.1

getSoTimeout

public int getSoTimeout()
                 throws SocketException
Retrive setting for SO_TIMEOUT. 0 returns implies that the option is disabled (i.e., timeout of infinity).
Since:
JDK1.1

setSendBufferSize

public void setSendBufferSize(int size)
                       throws SocketException
Sets the SO_SNDBUF option to the specified value for this DatagramSocket. The SO_SNDBUF option is used by the platform's networking code as a hint for the size to use to allocate set the underlying network I/O buffers.

Increasing buffer size can increase the performance of network I/O for high-volume connection, while decreasing it can help reduce the backlog of incoming data. For UDP, this sets the maximum size of a packet that may be sent on this socket.

Because SO_SNDBUF is a hint, applications that want to verify what size the buffers were set to should call getSendBufferSize.

Parameters:
size - the size to which to set the send buffer size. This value must be greater than 0.
Throws:
IllegalArgumentException - if the value is 0 or is negative.

getSendBufferSize

public int getSendBufferSize()
                      throws SocketException
Get value of the SO_SNDBUF option for this socket, that is the buffer size used by the platform for output on the this Socket.
See Also:
setSendBufferSize(int)

setReceiveBufferSize

public void setReceiveBufferSize(int size)
                          throws SocketException
Sets the SO_RCVBUF option to the specified value for this DatagramSocket. The SO_RCVBUF option is used by the platform's networking code as a hint for the size to use to allocate set the underlying network I/O buffers.

Increasing buffer size can increase the performance of network I/O for high-volume connection, while decreasing it can help reduce the backlog of incoming data. For UDP, this sets the maximum size of a packet that may be sent on this socket.

Because SO_RCVBUF is a hint, applications that want to verify what size the buffers were set to should call getReceiveBufferSize.

Parameters:
size - the size to which to set the receive buffer size. This value must be greater than 0.
Throws:
IllegalArgumentException - if the value is 0 or is negative.

getReceiveBufferSize

public int getReceiveBufferSize()
                         throws SocketException
Get value of the SO_RCVBUF option for this socket, that is the buffer size used by the platform for input on the this Socket.
See Also:
setReceiveBufferSize(int)

close

public void close()
Closes this datagram socket.

Java Platform 1.2
Beta 4

Submit a bug or feature
Submit comments/suggestions about new javadoc look
Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.
This documentation was generated with a post-Beta4 version of Javadoc.