Package jnr.unixsocket
Class UnixDatagramSocket
java.lang.Object
java.net.DatagramSocket
jnr.unixsocket.UnixDatagramSocket
- All Implemented Interfaces:
Closeable
,AutoCloseable
A SOCK_DGRAM variant of an AF_UNIX socket.
This specializaton of DatagramSocket delegates
most of it's funtionality to the corresponding
UnixDatagramChannel.
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionConstructs a new unbound instance.UnixDatagramSocket
(UnixDatagramChannel channel) Constructs a new instance. -
Method Summary
Modifier and TypeMethodDescriptionvoid
bind
(SocketAddress local) Binds this UnixDatagramSocket to a specific AF_UNIX address.void
close()
void
connect
(InetAddress addr, int port) void
connect
(SocketAddress addr) void
final Credentials
Retrieves the credentials for this UNIX socket.Returns the address to which this socket is connected (NOT implemented).Returns the address of the endpoint this socket is bound to.int
Returns the address of the endpoint this socket is connected to, ornull
if it is unconnected.int
int
private void
ignore()
boolean
isBound()
boolean
isClosed()
boolean
void
Receives a datagram packet from this socket (NOT implemented).void
Sends a datagram packet from this socket (NOT implemented).void
setReceiveBufferSize
(int size) void
setSendBufferSize
(int size) void
setSoTimeout
(int timeout) Methods inherited from class java.net.DatagramSocket
getBroadcast, getLocalAddress, getLocalPort, getPort, getReuseAddress, getTrafficClass, setBroadcast, setDatagramSocketImplFactory, setReuseAddress, setTrafficClass
-
Field Details
-
chan
-
closed
-
-
Constructor Details
-
UnixDatagramSocket
UnixDatagramSocket(UnixDatagramChannel channel) throws SocketException Constructs a new instance.- Parameters:
channel
- The channel to use.- Throws:
SocketException
- if the socket could not be created.
-
UnixDatagramSocket
Constructs a new unbound instance.- Throws:
SocketException
- if the socket could not be created.
-
-
Method Details
-
bind
Binds this UnixDatagramSocket to a specific AF_UNIX address.If the address is
null
, then on Linux, an autobind will be performed, which will bind this socket in Linux' abstract namespace on a unique path, chosen by the system. On all other platforms, A temporary path in the regular filesystem will be chosen.- Overrides:
bind
in classDatagramSocket
- Parameters:
local
- TheUnixSocketAddress
to bind to.- Throws:
SocketException
- if any error happens during the bind, or if the socket is already bound.UnsupportedAddressTypeException
- if addr is a SocketAddress subclass not supported by this socket.
-
disconnect
public void disconnect()- Overrides:
disconnect
in classDatagramSocket
-
close
public void close()- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classDatagramSocket
-
connect
- Overrides:
connect
in classDatagramSocket
- Throws:
SocketException
-
connect
- Overrides:
connect
in classDatagramSocket
-
getChannel
- Overrides:
getChannel
in classDatagramSocket
-
getInetAddress
Returns the address to which this socket is connected (NOT implemented). Since AF_UNIX sockets can not have an InetAddress, this returns alwaysnull
. UsegetRemoteSocketAddress()
instead, which always returns aUnixSocketAddress
.- Overrides:
getInetAddress
in classDatagramSocket
- Returns:
null
always.
-
getLocalSocketAddress
Returns the address of the endpoint this socket is bound to.- Overrides:
getLocalSocketAddress
in classDatagramSocket
- Returns:
- a
SocketAddress
representing the local endpoint of this socket, ornull
if it is closed or not bound. A non-null return value is always of typeUnixSocketAddress
- See Also:
-
getRemoteSocketAddress
Returns the address of the endpoint this socket is connected to, ornull
if it is unconnected.- Overrides:
getRemoteSocketAddress
in classDatagramSocket
- Returns:
- a
SocketAddress
representing the remote endpoint of this socket, ornull
if it is not connected. A non-null return value is always of typeUnixSocketAddress
-
isBound
public boolean isBound()- Overrides:
isBound
in classDatagramSocket
-
isClosed
public boolean isClosed()- Overrides:
isClosed
in classDatagramSocket
-
isConnected
public boolean isConnected()- Overrides:
isConnected
in classDatagramSocket
-
getCredentials
Retrieves the credentials for this UNIX socket. Clients calling this method will receive the server's credentials, and servers will receive the client's credentials. User ID, group ID, and PID are supplied. See man unix 7; SCM_CREDENTIALS- Returns:
- the credentials of the remote; null if not connected
- Throws:
UnsupportedOperationException
- if the underlying socket library doesn't support the SO_PEERCRED optionSocketException
- if fetching the socket option failed.
-
getReceiveBufferSize
- Overrides:
getReceiveBufferSize
in classDatagramSocket
- Throws:
SocketException
-
getSendBufferSize
- Overrides:
getSendBufferSize
in classDatagramSocket
- Throws:
SocketException
-
getSoTimeout
- Overrides:
getSoTimeout
in classDatagramSocket
- Throws:
SocketException
-
setReceiveBufferSize
- Overrides:
setReceiveBufferSize
in classDatagramSocket
- Throws:
SocketException
-
setSendBufferSize
- Overrides:
setSendBufferSize
in classDatagramSocket
- Throws:
SocketException
-
setSoTimeout
- Overrides:
setSoTimeout
in classDatagramSocket
- Throws:
SocketException
-
send
Sends a datagram packet from this socket (NOT implemented). Unfortunately,DatagramPacket
is final and can not deal with AF_UNIX addresses. Therefore, this functionality was omitted.- Overrides:
send
in classDatagramSocket
- Throws:
UnsupportedOperationException
- always.IOException
- See Also:
-
receive
Receives a datagram packet from this socket (NOT implemented). Unfortunately,DatagramPacket
is final and can not deal with AF_UNIX addresses. Therefore, this functionality was omitted.- Overrides:
receive
in classDatagramSocket
- Throws:
UnsupportedOperationException
- always.IOException
- See Also:
-
ignore
private void ignore()
-