gnu.java.net

Class PlainDatagramSocketImpl

Implemented Interfaces:
SocketOptions

public final class PlainDatagramSocketImpl
extends DatagramSocketImpl

This is the default socket implementation for datagram sockets. It makes native calls to C routines that implement BSD style SOCK_DGRAM sockets in the AF_INET family.

Field Summary

Fields inherited from class java.net.DatagramSocketImpl

fd, localPort

Fields inherited from interface java.net.SocketOptions

IP_MULTICAST_IF, IP_MULTICAST_IF2, IP_MULTICAST_LOOP, IP_TOS, SO_BINDADDR, SO_BROADCAST, SO_KEEPALIVE, SO_LINGER, SO_OOBINLINE, SO_RCVBUF, SO_REUSEADDR, SO_SNDBUF, SO_TIMEOUT, TCP_NODELAY

Constructor Summary

PlainDatagramSocketImpl()
Default do nothing constructor

Method Summary

protected void
bind(int port, InetAddress addr)
Binds this socket to a particular port and interface
protected void
close()
Closes the socket
protected void
connect(InetAddress addr, int port)
Connects the socket to a host specified by address and port.
protected void
create()
Creates a new datagram socket
protected void
disconnect()
Disconnects the socket.
protected void
finalize()
Called on an object by the Virtual Machine at most once, at some point after the Object is determined unreachable but before it is destroyed.
int
getNativeFD()
Object
getOption(int option_id)
Retrieves the value of an option on the socket
protected byte
getTTL()
Deprecated. 1.2
protected int
getTimeToLive()
Gets the Time to Live value for the socket
protected void
join(InetAddress addr)
Joins a multicast group
protected void
joinGroup(SocketAddress mcastaddr, NetworkInterface netIf)
Causes this socket to join the specified multicast group on a specified device
protected void
leave(InetAddress addr)
Leaves a multicast group
protected void
leaveGroup(SocketAddress mcastaddr, NetworkInterface netIf)
Leaves a multicast group
protected int
peek(InetAddress addr)
Takes a peek at the next packet received in order to retrieve the address of the sender
protected int
peekData(DatagramPacket packet)
Takes a peek at the next packet received.
protected void
receive(DatagramPacket packet)
Receives a UDP packet from the network
protected void
send(DatagramPacket packet)
Sends a packet of data to a remote host
void
setOption(int option_id, Object val)
Sets the value of an option on the socket
protected void
setTTL(byte ttl)
Deprecated. 1.2
protected void
setTimeToLive(int ttl)
Sets the Time to Live value for the socket

Methods inherited from class java.net.DatagramSocketImpl

bind, close, connect, create, disconnect, getFileDescriptor, getLocalPort, getTTL, getTimeToLive, join, joinGroup, leave, leaveGroup, peek, peekData, receive, send, setTTL, setTimeToLive

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

PlainDatagramSocketImpl

public PlainDatagramSocketImpl()
            throws IOException
Default do nothing constructor

Method Details

bind

protected void bind(int port,
                    InetAddress addr)
            throws SocketException
Binds this socket to a particular port and interface
Overrides:
bind in interface DatagramSocketImpl
Parameters:
port - The port to bind to
addr - The address to bind to
Throws:
SocketException - If an error occurs

close

protected void close()
Closes the socket
Overrides:
close in interface DatagramSocketImpl

connect

protected void connect(InetAddress addr,
                       int port)
            throws SocketException
Connects the socket to a host specified by address and port.
Overrides:
connect in interface DatagramSocketImpl
Parameters:
port - The port number of the host to connect to
Throws:
SocketException - If an error occurs
Since:
1.4

create

protected void create()
            throws SocketException
Creates a new datagram socket
Overrides:
create in interface DatagramSocketImpl
Throws:
SocketException - If an error occurs

disconnect

protected void disconnect()
Disconnects the socket.
Overrides:
disconnect in interface DatagramSocketImpl
Since:
1.4

finalize

protected void finalize()
            throws Throwable
Called on an object by the Virtual Machine at most once, at some point after the Object is determined unreachable but before it is destroyed. You would think that this means it eventually is called on every Object, but this is not necessarily the case. If execution terminates abnormally, garbage collection does not always happen. Thus you cannot rely on this method to always work. For finer control over garbage collection, use references from the java.lang.ref package.

Virtual Machines are free to not call this method if they can determine that it does nothing important; for example, if your class extends Object and overrides finalize to do simply super.finalize().

finalize() will be called by a Thread that has no locks on any Objects, and may be called concurrently. There are no guarantees on the order in which multiple objects are finalized. This means that finalize() is usually unsuited for performing actions that must be thread-safe, and that your implementation must be use defensive programming if it is to always work.

If an Exception is thrown from finalize() during garbage collection, it will be patently ignored and the Object will still be destroyed.

It is allowed, although not typical, for user code to call finalize() directly. User invocation does not affect whether automatic invocation will occur. It is also permitted, although not recommended, for a finalize() method to "revive" an object by making it reachable from normal code again.

Unlike constructors, finalize() does not get called for an object's superclass unless the implementation specifically calls super.finalize().

The default implementation does nothing.

Overrides:
finalize in interface Object
Throws:
Throwable - permits a subclass to throw anything in an overridden version; but the default throws nothing

getNativeFD

public int getNativeFD()

getOption

public Object getOption(int option_id)
            throws SocketException
Retrieves the value of an option on the socket
Specified by:
getOption in interface SocketOptions
Parameters:
option_id - The identifier of the option to retrieve
Returns:
The value of the option
Throws:
SocketException - If an error occurs

getTTL

protected byte getTTL()
            throws IOException

Deprecated. 1.2

Gets the Time to Live value for the socket
Overrides:
getTTL in interface DatagramSocketImpl
Returns:
The TTL value
Throws:
IOException - If an error occurs

getTimeToLive

protected int getTimeToLive()
            throws IOException
Gets the Time to Live value for the socket
Overrides:
getTimeToLive in interface DatagramSocketImpl
Returns:
The TTL value
Throws:
IOException - If an error occurs

join

protected void join(InetAddress addr)
            throws IOException
Joins a multicast group
Overrides:
join in interface DatagramSocketImpl
Parameters:
addr - The group to join
Throws:
IOException - If an error occurs

joinGroup

protected void joinGroup(SocketAddress mcastaddr,
                         NetworkInterface netIf)
            throws IOException
Causes this socket to join the specified multicast group on a specified device
Overrides:
joinGroup in interface DatagramSocketImpl
Parameters:
mcastaddr - The address to leave
netIf - The specified network interface to join the group at
Throws:
IOException - If an error occurs
Since:
1.4

leave

protected void leave(InetAddress addr)
            throws IOException
Leaves a multicast group
Overrides:
leave in interface DatagramSocketImpl
Parameters:
addr - The group to leave
Throws:
IOException - If an error occurs

leaveGroup

protected void leaveGroup(SocketAddress mcastaddr,
                          NetworkInterface netIf)
            throws IOException
Leaves a multicast group
Overrides:
leaveGroup in interface DatagramSocketImpl
Parameters:
mcastaddr - The address to join
netIf - The specified network interface to leave the group at
Throws:
IOException - If an error occurs
Since:
1.4

peek

protected int peek(InetAddress addr)
            throws IOException
Takes a peek at the next packet received in order to retrieve the address of the sender
Overrides:
peek in interface DatagramSocketImpl
Parameters:
Returns:
The port number of the sender of the packet
Throws:
IOException - If an error occurs

peekData

protected int peekData(DatagramPacket packet)
            throws IOException
Takes a peek at the next packet received. This packet is not consumed. With the next peekData/receive operation this packet will be read again.
Overrides:
peekData in interface DatagramSocketImpl
Parameters:
Returns:
The port number of the sender of the packet.
Throws:
IOException - If an error occurs
Since:
1.4

receive

protected void receive(DatagramPacket packet)
            throws IOException
Receives a UDP packet from the network
Overrides:
receive in interface DatagramSocketImpl
Parameters:
packet - The packet to fill in with the data received
Throws:
IOException - IOException If an error occurs

send

protected void send(DatagramPacket packet)
            throws IOException
Sends a packet of data to a remote host
Overrides:
send in interface DatagramSocketImpl
Parameters:
packet - The packet to send
Throws:
IOException - If an error occurs

setOption

public void setOption(int option_id,
                      Object val)
            throws SocketException
Sets the value of an option on the socket
Specified by:
setOption in interface SocketOptions
Parameters:
option_id - The identifier of the option to set
val - The value of the option to set
Throws:
SocketException - If an error occurs

setTTL

protected void setTTL(byte ttl)
            throws IOException

Deprecated. 1.2

Sets the Time to Live value for the socket
Overrides:
setTTL in interface DatagramSocketImpl
Parameters:
ttl - The new TTL value
Throws:
IOException - If an error occurs

setTimeToLive

protected void setTimeToLive(int ttl)
            throws IOException
Sets the Time to Live value for the socket
Overrides:
setTimeToLive in interface DatagramSocketImpl
Parameters:
ttl - The new TTL value
Throws:
IOException - If an error occurs

PlainDatagramSocketImpl.java -- Default DatagramSocket implementation Copyright (C) 1998, 1999, 2001, 2003, 2004, 2005, 2007 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.