Package jnr.unixsocket
Class UnixDatagramSocket
- java.lang.Object
-
- java.net.DatagramSocket
-
- jnr.unixsocket.UnixDatagramSocket
-
- All Implemented Interfaces:
Closeable,AutoCloseable
public class UnixDatagramSocket extends DatagramSocket
A SOCK_DGRAM variant of an AF_UNIX socket. This specializaton of DatagramSocket delegates most of it's funtionality to the corresponding UnixDatagramChannel.
-
-
Constructor Summary
Constructors Constructor Description UnixDatagramSocket()Constructs a new unbound instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidbind(SocketAddress local)Binds this UnixDatagramSocket to a specific AF_UNIX address.voidclose()voidconnect(InetAddress addr, int port)voidconnect(SocketAddress addr)voiddisconnect()DatagramChannelgetChannel()CredentialsgetCredentials()Retrieves the credentials for this UNIX socket.InetAddressgetInetAddress()Returns the address to which this socket is connected (NOT implemented).SocketAddressgetLocalSocketAddress()Returns the address of the endpoint this socket is bound to.intgetReceiveBufferSize()SocketAddressgetRemoteSocketAddress()Returns the address of the endpoint this socket is connected to, ornullif it is unconnected.intgetSendBufferSize()intgetSoTimeout()booleanisBound()booleanisClosed()booleanisConnected()voidreceive(DatagramPacket p)Receives a datagram packet from this socket (NOT implemented).voidsend(DatagramPacket p)Sends a datagram packet from this socket (NOT implemented).voidsetReceiveBufferSize(int size)voidsetSendBufferSize(int size)voidsetSoTimeout(int timeout)-
Methods inherited from class java.net.DatagramSocket
getBroadcast, getLocalAddress, getLocalPort, getPort, getReuseAddress, getTrafficClass, setBroadcast, setDatagramSocketImplFactory, setReuseAddress, setTrafficClass
-
-
-
-
Constructor Detail
-
UnixDatagramSocket
public UnixDatagramSocket() throws SocketExceptionConstructs a new unbound instance.- Throws:
SocketException- if the socket could not be created.
-
-
Method Detail
-
bind
public void bind(SocketAddress local) throws SocketException
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:
bindin classDatagramSocket- Parameters:
local- TheUnixSocketAddressto 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:
disconnectin classDatagramSocket
-
close
public void close()
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classDatagramSocket
-
connect
public void connect(SocketAddress addr) throws SocketException
- Overrides:
connectin classDatagramSocket- Throws:
SocketException
-
connect
public void connect(InetAddress addr, int port)
- Overrides:
connectin classDatagramSocket
-
getChannel
public DatagramChannel getChannel()
- Overrides:
getChannelin classDatagramSocket
-
getInetAddress
public InetAddress 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:
getInetAddressin classDatagramSocket- Returns:
nullalways.
-
getLocalSocketAddress
public SocketAddress getLocalSocketAddress()
Returns the address of the endpoint this socket is bound to.- Overrides:
getLocalSocketAddressin classDatagramSocket- Returns:
- a
SocketAddressrepresenting the local endpoint of this socket, ornullif it is closed or not bound. A non-null return value is always of typeUnixSocketAddress - See Also:
bind(SocketAddress)
-
getRemoteSocketAddress
public SocketAddress getRemoteSocketAddress()
Returns the address of the endpoint this socket is connected to, ornullif it is unconnected.- Overrides:
getRemoteSocketAddressin classDatagramSocket- Returns:
- a
SocketAddressrepresenting the remote endpoint of this socket, ornullif it is not connected. A non-null return value is always of typeUnixSocketAddress
-
isBound
public boolean isBound()
- Overrides:
isBoundin classDatagramSocket
-
isClosed
public boolean isClosed()
- Overrides:
isClosedin classDatagramSocket
-
isConnected
public boolean isConnected()
- Overrides:
isConnectedin classDatagramSocket
-
getCredentials
public final Credentials getCredentials() throws SocketException
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
public int getReceiveBufferSize() throws SocketException- Overrides:
getReceiveBufferSizein classDatagramSocket- Throws:
SocketException
-
getSendBufferSize
public int getSendBufferSize() throws SocketException- Overrides:
getSendBufferSizein classDatagramSocket- Throws:
SocketException
-
getSoTimeout
public int getSoTimeout() throws SocketException- Overrides:
getSoTimeoutin classDatagramSocket- Throws:
SocketException
-
setReceiveBufferSize
public void setReceiveBufferSize(int size) throws SocketException- Overrides:
setReceiveBufferSizein classDatagramSocket- Throws:
SocketException
-
setSendBufferSize
public void setSendBufferSize(int size) throws SocketException- Overrides:
setSendBufferSizein classDatagramSocket- Throws:
SocketException
-
setSoTimeout
public void setSoTimeout(int timeout) throws SocketException- Overrides:
setSoTimeoutin classDatagramSocket- Throws:
SocketException
-
send
public void send(DatagramPacket p) throws IOException
Sends a datagram packet from this socket (NOT implemented). Unfortunately,DatagramPacketis final and can not deal with AF_UNIX addresses. Therefore, this functionality was omitted.- Overrides:
sendin classDatagramSocket- Throws:
UnsupportedOperationException- always.IOException- See Also:
DatagramPacket,DatagramSocket.send(java.net.DatagramPacket)
-
receive
public void receive(DatagramPacket p) throws IOException
Receives a datagram packet from this socket (NOT implemented). Unfortunately,DatagramPacketis final and can not deal with AF_UNIX addresses. Therefore, this functionality was omitted.- Overrides:
receivein classDatagramSocket- Throws:
UnsupportedOperationException- always.IOException- See Also:
DatagramPacket,DatagramSocket.receive(java.net.DatagramPacket)
-
-