setSoTimeout(int): This method is available in the java.net.DatagramSocket class of Java.
Syntax:
void java.net.DatagramSocket.setSoTimeout(int timeout) throws SocketException
This method takes one argument. This method enables/disable SO_TIMEOUT with the specified timeout, in milliseconds.
Note:
1. With this option set to a positive timeout value, a call to receive() for this DatagramSocketwill block for only this amount of time.
2. If the timeout expires, a java.net.SocketTimeoutException is raised, though the DatagramSocket is still valid.
3. A timeout of zero is interpreted as an infinite timeout. The option must be enabled prior to entering the blocking operation to have an effect.
Parameters: One parameter is required for this method.
timeout: the specified timeout in milliseconds.
Throws:
1. SocketException - if there is an error in the underlying protocol, such as an UDP error.
2. IllegalArgumentException - if the timeout is negative.
Approach 1: When no exception
Java
package com.DatagramSocket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.net.UnknownHostException;public class DatagramSocketsetSoTimeout {public static void main(String[] args)throws UnknownHostException, SocketException {int port = 100;InetAddress laddr = InetAddress.getLocalHost();DatagramSocket datagramSocket =new DatagramSocket(port, laddr);int timeout = 100;datagramSocket.setSoTimeout(timeout);System.out.println("Successfully setSoTimeout");}}
Output:
Successfully setSoTimeout
Approach 2: IllegalArgumentException
Java
package com.DatagramSocket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.net.UnknownHostException;public class DatagramSocketsetSoTimeout {public static void main(String[] args)throws UnknownHostException, SocketException {int port = 100;InetAddress laddr = InetAddress.getLocalHost();DatagramSocket datagramSocket =new DatagramSocket(port, laddr);int timeout = -100;datagramSocket.setSoTimeout(timeout);System.out.println("Successfully setSoTimeout");}}
Output:
Exception in thread "main" java.lang.IllegalArgumentException: timeout < 0 at java.base/sun.nio.ch.DatagramSocketAdaptor.setSoTimeout(DatagramSocketAdaptor.java:294) at java.base/java.net.DatagramSocket.setSoTimeout(DatagramSocket.java:624) at com.DatagramSocket.DatagramSocketsetSoTimeout.main(DatagramSocketsetSoTimeout.java:16)
Some other methods of DatagramSocket class
DatagramSocket(): This method constructs a datagram socket and binds it to any available port on the local host machine.
DatagramSocket(int): This method constructs a datagram socket and binds it to the specified port on the local host machine.
DatagramSocket(SocketAddress): This method creates a datagram socket, bound to the specified local socket address.
DatagramSocket(int, InetAddress): This method creates a datagram socket, bound to the specified local address.
bind(SocketAddress): This method binds this DatagramSocket to a specific address and port.
connect(SocketAddress): This method connects this socket to a remote socket address (IP address + port number).
connect(InetAddress, int): This method connects the socket to a remote address for this socket. When a socket is connected to a remote address, packets may only be sent to or received from that address.
disconnect(): This method disconnects the socket.
getBroadcast(): This method tests if SO_BROADCAST is enabled.
getChannel(): This method returns the unique java.nio.channels.DatagramChannel object associated with this datagram socket, if any.
getInetAddress(): This method returns the address to which this socket is connected. Returns null if the socket is not connected.
getLocalAddress(): This method gets the local address to which the socket is bound.
getLocalPort(): This method returns the port number on the local host to which this socket is bound.
getLocalSocketAddress(): This method returns the address of the endpoint this socket is bound to.
getOption(SocketOption): This method returns the value of a socket option.
getPort(): This method returns the port number to which this socket is connected.
getReceiveBufferSize(): This method gets the value of the SO_RCVBUF option for this DatagramSocket, which is the buffer size used by the platform for input on this DatagramSocket.
getRemoteSocketAddress(): This method returns the address of the endpoint this socket is connected to, or null if it is unconnected.
getReuseAddress(): This method tests if SO_REUSEADDR is enabled.
getSendBufferSize(): This method gets the value of the SO_SNDBUF option for this DatagramSocket, which is the buffer size used by the platform for output on this DatagramSocket.
getSoTimeout(): This method retrieves the setting for SO_TIMEOUT. 0 returns implies that the option is disabled (i.e., timeout of infinity).
getTrafficClass(): This method gets the traffic class or type-of-service in the IP datagram header for packets sent from this DatagramSocket.
isBound(): This method returns the binding state of the socket.
isClosed(): This method returns whether the socket is closed or not.
isConnected(): This method returns the connection state of the socket.
receive(DatagramPacket): This method receives a datagram packet from this socket.
send(DatagramPacket): This method sends a datagram packet from this socket.
setBroadcast(boolean): This method enables/disables SO_BROADCAST.
DatagramSocket.setDatagramSocketImplFactory(DatagramSocketImplFactory): This method sets the datagram socket implementation factory for the application.
setOption(SocketOption, String): This method sets the value of a socket option.
setReceiveBufferSize(int): This method sets the SO_RCVBUF option to the specified value for this DatagramSocket.
setReuseAddress(boolean): This method enables/disables the SO_REUSEADDR socket option.
setSendBufferSize(int): This method sets the SO_SNDBUF option to the specified value for this DatagramSocket.
setSoTimeout(int): This method enables/disable SO_TIMEOUT with the specified timeout, in milliseconds.
setTrafficClass(int): This method sets the traffic class or type-of-service octet in the IP datagram header for datagrams sent from this DatagramSocket.
supportedOptions(): This method returns a set of the socket options supported by this socket. This method will continue to return the set of options even after the socket has been closed.
No comments:
Post a Comment