PlainDatagramSocketImpl.java [plain text]
package java.net;
import java.io.IOException;
class PlainDatagramSocketImpl extends DatagramSocketImpl
{
static final int _Jv_TCP_NODELAY_ = SocketOptions.TCP_NODELAY,
_Jv_SO_BINDADDR_ = SocketOptions.SO_BINDADDR,
_Jv_SO_REUSEADDR_ = SocketOptions.SO_REUSEADDR,
_Jv_IP_MULTICAST_IF_ = SocketOptions.IP_MULTICAST_IF,
_Jv_SO_LINGER_ = SocketOptions.SO_LINGER,
_Jv_SO_TIMEOUT_ = SocketOptions.SO_TIMEOUT,
_Jv_SO_SNDBUF_ = SocketOptions.SO_SNDBUF,
_Jv_SO_RCVBUF_ = SocketOptions.SO_RCVBUF;
int fnum = -1;
InetAddress localAddress;
int timeout = 0;
public PlainDatagramSocketImpl()
{
}
protected native void bind(int lport, InetAddress laddr)
throws SocketException;
protected native void create() throws SocketException;
protected native int peek(InetAddress i) throws IOException;
protected native void setTimeToLive(int ttl) throws IOException;
protected native int getTimeToLive() throws IOException;
protected native void send(DatagramPacket p) throws IOException;
protected native void receive(DatagramPacket p) throws IOException;
public native void setOption(int optID, Object value) throws SocketException;
public native Object getOption(int optID) throws SocketException;
private native void mcastGrp(InetAddress inetaddr, boolean join)
throws IOException;
protected native void close();
protected byte getTTL() throws IOException
{
return (byte) getTimeToLive();
}
protected void setTTL(byte ttl) throws IOException
{
setTimeToLive(((int) ttl) & 0xFF);
}
protected void join(InetAddress inetaddr) throws IOException
{
mcastGrp(inetaddr, true);
}
protected void leave(InetAddress inetaddr) throws IOException
{
mcastGrp(inetaddr, false);
}
protected void finalize() throws Throwable
{
synchronized (this)
{
if (fnum != -1)
close();
}
super.finalize();
}
}