java.net
Class RawSocket

java.lang.Object
  |
  +--java.net.RawSocket
Direct Known Subclasses:
IcmpSocket

public class RawSocket
extends java.lang.Object

This class represents a socket for sending and receiving raw packets.

A raw 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.

Since:
JDK1.2
See Also:
RawPacket

Constructor Summary
RawSocket()
          Constructs a raw socket.
RawSocket(InetAddress laddr)
          Creates a raw socket, bound to the specified local address.
RawSocket(int protocol)
          Constructs a raw socket with the specified protocol ID.
RawSocket(int protocol, InetAddress laddr)
          Creates a raw socket, bound to the specified local address with the specified protocol ID.
 
Method Summary
 void close()
          Closes this datagram socket.
 int getChecksum()
          Get the offset at which the checsum is placed in the packet
 int getFlowLabel()
          Get value of the flow label for this socket,
 InetAddress getLocalAddress()
          Gets the local address to which the socket is bound.
 int getNetAuthenticate()
          Get value of the IPV6_AUTH_NETWORK_LEVEL option for this socket, that is the AH policy in tunnel mode that is applied on the socket.
 int getNetEncryption()
          Get value of the IPV6_ESP_NETWORK_LEVEL option for this socket, that is the ESP policy in tunnel mode that is applied on the socket.
 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.
 int getTrafficClass()
          Get value of the traffic class for this socket,
 int getTransportAuthenticate()
          Get value of the IPV6_AUTH_TRANS_LEVEL option for this socket, that is the AH policy in transport that is applied on the socket.
 int getTransportEncryption()
          Get value of the IPV6_ESP_TRANS_LEVEL option for this socket, that is the ESP policy in transport mode that is applied on the socket.
 void receive(RawPacket p)
          Receives a raw packet from this socket.
 void send(RawPacket p)
          Sends a raw packet from this socket.
 void setChecksum(int offset)
          Activate the checksum option and situates it a the specified offset.
 void setFlowLabel(int value)
          Set value of the flow label for this socket,
 void setNetAuthenticate(int value)
          Set value of the IPV6_AH_NETWORK_LEVEL option for this socket, that is the ESP policy in tunnel mode to apply on the socket.
 void setNetEncryption(int value)
          Set value of the IPV6_ESP_NETWORK_LEVEL option for this socket, that is the ESP policy in tunnel mode to apply on the 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.
 void setTrafficClass(int value)
          Set value of the traffic class for this socket,
 void setTransportAuthenticate(int value)
          Set value of the IPV6_AH_TRANS_LEVEL option for this socket, that is the ESP policy in transport mode to apply on the socket.
 void setTransportEncryption(int value)
          Set value of the IPV6_ESP_TRANS_LEVEL option for this socket, that is the ESP policy in transport mode to apply on the socket.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RawSocket

public RawSocket()
          throws java.net.SocketException
Constructs a raw socket.
Throws:
java.net.SocketException - if the socket could not be opened.
Since:
JDK1.2

RawSocket

public RawSocket(InetAddress laddr)
          throws java.net.SocketException
Creates a raw socket, bound to the specified local address.
Parameters:
laddr - local address to bind
Since:
JDK1.2

RawSocket

public RawSocket(int protocol)
          throws java.net.SocketException
Constructs a raw socket with the specified protocol ID.
Parameters:
protocol - protocol ID
Throws:
java.net.SocketException - if the socket could not be opened, or the socket could not bind to the specified local port.
Since:
JDK1.2

RawSocket

public RawSocket(int protocol,
                 InetAddress laddr)
          throws java.net.SocketException
Creates a raw socket, bound to the specified local address with the specified protocol ID.
Parameters:
protocol - protocol ID
laddr - local address to bind
Since:
JDK1.2
Method Detail

send

public void send(RawPacket p)
          throws java.io.IOException
Sends a raw packet from this socket. The RawPacket includes information indicating the data to be sent, its length, the IP address of the remote host.
Parameters:
p - the RawPacket to be sent.
Throws:
java.io.IOException - if an I/O error occurs.
Since:
JDK1.2
See Also:
RawPacket

receive

public void receive(RawPacket p)
             throws java.io.IOException
Receives a raw packet from this socket. When this method returns, the RawPacket's buffer is filled with the data received. The raw packet also contains the sender's IP address.

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

Parameters:
p - the RawPacket into which to place the incoming data.
Throws:
java.io.IOException - if an I/O error occurs.
Since:
JDK1.2
See Also:
RawPacket, RawSocket

setSoTimeout

public void setSoTimeout(int timeout)
                  throws java.net.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 RawSocket 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.2

getSoTimeout

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

setChecksum

public void setChecksum(int offset)
                 throws java.net.SocketException
Activate the checksum option and situates it a the specified offset.
Parameters:
ofset - the offset where to place the checksum
Since:
JDK1.2

getChecksum

public int getChecksum()
                throws java.net.SocketException
Get the offset at which the checsum is placed in the packet

getLocalAddress

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

setSendBufferSize

public void setSendBufferSize(int size)
                       throws java.net.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:
java.lang.IllegalArgumentException - if the value is 0 or is negative.

getSendBufferSize

public int getSendBufferSize()
                      throws java.net.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 java.net.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:
java.lang.IllegalArgumentException - if the value is 0 or is negative.

getReceiveBufferSize

public int getReceiveBufferSize()
                         throws java.net.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.
Since:
JDK1.2

setNetEncryption

public void setNetEncryption(int value)
                      throws java.net.SocketException
Set value of the IPV6_ESP_NETWORK_LEVEL option for this socket, that is the ESP policy in tunnel mode to apply on the socket.
Parameters:
value - value of the policy to apply on the socket
See Also:
getNetEncryption()

setTransportEncryption

public void setTransportEncryption(int value)
                            throws java.net.SocketException
Set value of the IPV6_ESP_TRANS_LEVEL option for this socket, that is the ESP policy in transport mode to apply on the socket.
Parameters:
value - value of the policy to apply on the socket
See Also:
getTransportEncryption()

setNetAuthenticate

public void setNetAuthenticate(int value)
                        throws java.net.SocketException
Set value of the IPV6_AH_NETWORK_LEVEL option for this socket, that is the ESP policy in tunnel mode to apply on the socket.
Parameters:
value - value of the policy to apply on the socket
See Also:
#getNetworkAuthenticate

setTransportAuthenticate

public void setTransportAuthenticate(int value)
                              throws java.net.SocketException
Set value of the IPV6_AH_TRANS_LEVEL option for this socket, that is the ESP policy in transport mode to apply on the socket.
Parameters:
value - value of the policy to apply on the socket
See Also:
getTransportAuthenticate()

getNetEncryption

public int getNetEncryption()
                     throws java.net.SocketException
Get value of the IPV6_ESP_NETWORK_LEVEL option for this socket, that is the ESP policy in tunnel mode that is applied on the socket.
See Also:
setNetEncryption(int)

getTransportEncryption

public int getTransportEncryption()
                           throws java.net.SocketException
Get value of the IPV6_ESP_TRANS_LEVEL option for this socket, that is the ESP policy in transport mode that is applied on the socket.
See Also:
setTransportEncryption(int)

getNetAuthenticate

public int getNetAuthenticate()
                       throws java.net.SocketException
Get value of the IPV6_AUTH_NETWORK_LEVEL option for this socket, that is the AH policy in tunnel mode that is applied on the socket.
See Also:
setNetAuthenticate(int)

getTransportAuthenticate

public int getTransportAuthenticate()
                             throws java.net.SocketException
Get value of the IPV6_AUTH_TRANS_LEVEL option for this socket, that is the AH policy in transport that is applied on the socket.
See Also:
setTransportAuthenticate(int)

setFlowLabel

public void setFlowLabel(int value)
                  throws java.net.SocketException
Set value of the flow label for this socket,
Parameters:
value - value of the flow label
See Also:
getFlowLabel()

setTrafficClass

public void setTrafficClass(int value)
                     throws java.net.SocketException
Set value of the traffic class for this socket,
Parameters:
value - value of the traffic class
See Also:
getTrafficClass()

getFlowLabel

public int getFlowLabel()
                 throws java.net.SocketException
Get value of the flow label for this socket,
See Also:
setFlowLabel(int)

getTrafficClass

public int getTrafficClass()
                    throws java.net.SocketException
Get value of the traffic class for this socket,
See Also:
setTrafficClass(int)