FileDocCategorySizeDatePackage
DatagramPacket.javaAPI DocJava SE 6 API11366Tue Jun 10 00:25:40 BST 2008java.net

DatagramPacket

public final class DatagramPacket extends Object
This class represents a datagram packet.

Datagram packets are used to implement a connectionless packet delivery service. Each message is routed from one machine to another based solely on information contained within that packet. Multiple packets sent from one machine to another might be routed differently, and might arrive in any order. Packet delivery is not guaranteed.

author
Pavani Diwanji
author
Benjamin Renaud
version
1.46, 04/07/06
since
JDK1.0

Fields Summary
byte[]
buf
Perform class initialization
int
offset
int
length
int
bufLength
InetAddress
address
int
port
Constructors Summary
public DatagramPacket(byte[] buf, int offset, int length)
Constructs a DatagramPacket for receiving packets of length length, specifying an offset into the buffer.

The length argument must be less than or equal to buf.length.

param
buf buffer for holding the incoming datagram.
param
offset the offset for the buffer
param
length the number of bytes to read.
since
1.2

	setData(buf, offset, length);
	this.address = null;
	this.port = -1;
    
public DatagramPacket(byte[] buf, int length)
Constructs a DatagramPacket for receiving packets of length length.

The length argument must be less than or equal to buf.length.

param
buf buffer for holding the incoming datagram.
param
length the number of bytes to read.

	this (buf, 0, length);
    
public DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)
Constructs a datagram packet for sending packets of length length with offset ioffsetto the specified port number on the specified host. The length argument must be less than or equal to buf.length.

param
buf the packet data.
param
offset the packet data offset.
param
length the packet data length.
param
address the destination address.
param
port the destination port number.
see
java.net.InetAddress
since
1.2

	setData(buf, offset, length);
	setAddress(address);
	setPort(port);
    
public DatagramPacket(byte[] buf, int offset, int length, SocketAddress address)
Constructs a datagram packet for sending packets of length length with offset ioffsetto the specified port number on the specified host. The length argument must be less than or equal to buf.length.

param
buf the packet data.
param
offset the packet data offset.
param
length the packet data length.
param
address the destination socket address.
throws
IllegalArgumentException if address type is not supported
see
java.net.InetAddress
since
1.4

	setData(buf, offset, length);
	setSocketAddress(address);
    
public DatagramPacket(byte[] buf, int length, InetAddress address, int port)
Constructs a datagram packet for sending packets of length length to the specified port number on the specified host. The length argument must be less than or equal to buf.length.

param
buf the packet data.
param
length the packet length.
param
address the destination address.
param
port the destination port number.
see
java.net.InetAddress

	this(buf, 0, length, address, port);
    
public DatagramPacket(byte[] buf, int length, SocketAddress address)
Constructs a datagram packet for sending packets of length length to the specified port number on the specified host. The length argument must be less than or equal to buf.length.

param
buf the packet data.
param
length the packet length.
param
address the destination address.
throws
IllegalArgumentException if address type is not supported
since
1.4
see
java.net.InetAddress

	this(buf, 0, length, address);
    
Methods Summary
public synchronized java.net.InetAddressgetAddress()
Returns the IP address of the machine to which this datagram is being sent or from which the datagram was received.

return
the IP address of the machine to which this datagram is being sent or from which the datagram was received.
see
java.net.InetAddress
see
#setAddress(java.net.InetAddress)

	return address;
    
public synchronized byte[]getData()
Returns the data buffer. The data received or the data to be sent starts from the offset in the buffer, and runs for length long.

return
the buffer used to receive or send data
see
#setData(byte[], int, int)

	return buf;
    
public synchronized intgetLength()
Returns the length of the data to be sent or the length of the data received.

return
the length of the data to be sent or the length of the data received.
see
#setLength(int)

	return length;
    
public synchronized intgetOffset()
Returns the offset of the data to be sent or the offset of the data received.

return
the offset of the data to be sent or the offset of the data received.
since
1.2

	return offset;
    
public synchronized intgetPort()
Returns the port number on the remote host to which this datagram is being sent or from which the datagram was received.

return
the port number on the remote host to which this datagram is being sent or from which the datagram was received.
see
#setPort(int)

	return port;
    
public synchronized java.net.SocketAddressgetSocketAddress()
Gets the SocketAddress (usually IP address + port number) of the remote host that this packet is being sent to or is coming from.

return
the SocketAddress
since
1.4
see
#setSocketAddress

	return new InetSocketAddress(getAddress(), getPort());
    
private static native voidinit()
Perform class load-time initializations.

public synchronized voidsetAddress(java.net.InetAddress iaddr)
Sets the IP address of the machine to which this datagram is being sent.

param
iaddr the InetAddress
since
JDK1.1
see
#getAddress()

	address = iaddr;
    
public synchronized voidsetData(byte[] buf, int offset, int length)
Set the data buffer for this packet. This sets the data, length and offset of the packet.

param
buf the buffer to set for this packet
param
offset the offset into the data
param
length the length of the data and/or the length of the buffer used to receive data
exception
NullPointerException if the argument is null
see
#getData
see
#getOffset
see
#getLength
since
1.2

	/* this will check to see if buf is null */
	if (length < 0 || offset < 0 ||
	    ((length + offset) > buf.length)) {
	    throw new IllegalArgumentException("illegal length or offset");
	}
	this.buf = buf;
	this.length = length;
	this.bufLength = length;
	this.offset = offset;
    
public synchronized voidsetData(byte[] buf)
Set the data buffer for this packet. With the offset of this DatagramPacket set to 0, and the length set to the length of buf.

param
buf the buffer to set for this packet.
exception
NullPointerException if the argument is null.
see
#getLength
see
#getData
since
JDK1.1

	if (buf == null) {
	    throw new NullPointerException("null packet buffer");
	}
	this.buf = buf;
	this.offset = 0;
	this.length = buf.length;
	this.bufLength = buf.length;
    
public synchronized voidsetLength(int length)
Set the length for this packet. The length of the packet is the number of bytes from the packet's data buffer that will be sent, or the number of bytes of the packet's data buffer that will be used for receiving data. The length must be lesser or equal to the offset plus the length of the packet's buffer.

param
length the length to set for this packet.
exception
IllegalArgumentException if the length is negative of if the length is greater than the packet's data buffer length.
see
#getLength
see
#setData
since
JDK1.1

	if ((length + offset) > buf.length || length < 0) {
	    throw new IllegalArgumentException("illegal length");
	}
	this.length = length;
	this.bufLength = this.length;
    
public synchronized voidsetPort(int iport)
Sets the port number on the remote host to which this datagram is being sent.

param
iport the port number
since
JDK1.1
see
#getPort()

	if (iport < 0 || iport > 0xFFFF) {
	    throw new IllegalArgumentException("Port out of range:"+ iport);
	}
	port = iport;
    
public synchronized voidsetSocketAddress(java.net.SocketAddress address)
Sets the SocketAddress (usually IP address + port number) of the remote host to which this datagram is being sent.

param
address the SocketAddress
throws
IllegalArgumentException if address is null or is a SocketAddress subclass not supported by this socket
since
1.4
see
#getSocketAddress

	if (address == null || !(address instanceof InetSocketAddress))
	    throw new IllegalArgumentException("unsupported address type");
	InetSocketAddress addr = (InetSocketAddress) address;
	if (addr.isUnresolved())
	    throw new IllegalArgumentException("unresolved address");
	setAddress(addr.getAddress());
	setPort(addr.getPort());