Updated April 6, 2023
Introduction to Java DatagramSocket
Java DatagramSocket class represents a type of network socket that is connectionless and used for sending the packets of the datagram and receiving the packets of the datagram; for delivery of any packet, the datagram socket is the sending and receiving point of the service, and each and every packet sent or received using datagram socket is addressed individually and then routed to the destination, and if multiple packets are transmitted between two machines, the routing of the packets may be different, and they can arrive in any order, and the SO_BROADCAST option is enabled in a newly constructed datagram socket which allows transmission of broadcast diagrams.
Syntax
The syntax of java DatagramSocket is as follows:
DatagramSocket variable_name = new DatagramSocket();
How DatagramSocket work in Java?
- Datagram Sockets are created on the client program side and server program side by using the DatagramSocket class for communication link and for sending and receiving the data packets.
- DatagramSocket() constructor can be chosen to create a datagram socket on the client program side, and the DatagramSocket(int port) constructor can be chosen to create a datagram socket on the server program side.
- SocketException object is thrown by either of the constructors if they cannot create the datagram sockets or if the datagram socket cannot be bound to the port.
- Once the program creates the datagram socket object, send(DatagramPacket dgp) is called by the program to send the datagram packets and receive(DatagramPacket dgp) to receive datagram packets, respectively.
Consider the below program to send and receive datagram packets by using the DatagramSocket class:
Code:
//Java program to send datagram packets using DatagramSocket class
import java.net.*;
public class Sender
{
public static void main(String[] args) throws Exception
{
DatagramSocket datasoc = new DatagramSocket();
String strn = "Welcome to DatagramSocket class";
InetAddress ipaddr = InetAddress.getByName("127.0.0.1");
DatagramPacket dpac = new DatagramPacket(strn.getBytes(), strn.length(), ipaddr, 3000);
datasoc.send(dpac);
datasoc.close();
}
}
//Java program to receive datagram packets using DatagramSocket class
import java.net.*;
public class Receiver
{
public static void main(String[] args) throws Exception
{
DatagramSocket datasoc = new DatagramSocket(3000);
byte[] buff = new byte[1024];
DatagramPacket dpac = new DatagramPacket(buff, 1024);
datasoc.receive(dpac);
String strn = new String(dpac.getData(), 0, dpac.getLength());
System.out.println(strn);
datasoc.close();
}
}
Output:
Explanation: In the above program, two sets of programs are created: sending data packets using the DatagramSocket class and one for receiving data packets using the DatagramSocket class. In the program for sending data packets using DatagramSocket class, an instance of a DatagramSocket class is created. Then the string is assigned to the variable strn. Then the internet IP address is assigned to a variable. Then, the datagram packet is created, and the send method of the DatagramSocket class is used to send the data packets to the destination IP address.
In the program for receiving data packets using DatagramSocket class, an instance of a DatagramSocket class is created. Then the instance of byte class is created. Then, the datagram packet is created, and the receive method of DatagramSocket class is used to receive the data packets to the source IP address.
Constructors
There are several constructors of the DatagramSocket class. They are:
- DatagramSocket(): A datagram socket is constructed using the DatagramSocket() constructor, and it is bound to the available port on the local host machine.
- DatagramSocket(int): A datagram socket is constructed using the DatagramSocket() constructor, and it is bind to the specified port on the local host machine.
- DatagramSocket(int, InetAddress): A datagram socket is created using the DatagramSocket() constructor, and it is bound to the specified local internet address.
Example to Implement Java DatagramSocket
Below are the example mentioned:
Example
Demonstrate the usage of various methods of DatagramScoket class.
Code:
import java.io.IOException;
import java.net.DatagramSocket;
public class program
{
public static void main(String[] args) throws IOException
{
//Datagram Socket class Constructor is called
DatagramSocket sock = new DatagramSocket(1235);
// The method setSendBufferSize() method of datagram socket class is called
sock.setSendBufferSize(20);
// The method getSendBufferSize() method of datagram socket class is called
System.out.println("The buffer size sent is : " + sock.getSendBufferSize());
// The method setReceiveBufferSize() method of datagram socket class is called
sock.setReceiveBufferSize(20);
// The method getReceiveBufferSize() method of datagram socket class is called
System.out.println("The buffer size received is : " +
sock.getReceiveBufferSize());
// The method setReuseAddress() method of datagram socket class is called
sock.setReuseAddress(false);
// The method getReuseAddress() method of datagram socket class is called
System.out.println("The SetReuse address is set to : " +
sock.getReuseAddress());
// The method setBroadcast() method of datagram socket class is called
sock.setBroadcast(true);
// The method getBroadcast() method of datagram socket class is called
System.out.println("The setBroadcast is set to : " +
sock.getBroadcast());
// The method setTrafficClass() method of datagram socket class is called
sock.setTrafficClass(45);
// The method getTrafficClass() method of datagram socket class is called
System.out.println("The Traffic class is set to : " +
sock.getTrafficClass());
// The method getChannel() method of datagram socket class is called
System.out.println("The Channel is set to : " +
((sock.getChannel()!=null)?sock.getChannel():"null"));
// The method setSocketImplFactory() method of datagram socket class is called
sock.setDatagramSocketImplFactory(null);
// The method close() method of datagram socket class is called
sock.close();
// The method isClosed() method of datagram socket class is called
System.out.println("If the Socket Is Closed : " + sock.isClosed());
}
}
Output:
Explanation: In the above program, a class called program is defined. Then an instance of the datagram socket class is created. The method setSendBufferSize() method of the datagram socket class is called, which sends the buffer size. Then the method getSendBufferSize() method of datagram socket class is called, which receives the buffer size.
Then the method setReceiveBufferSize() method of datagram socket class is called, and then the method getReceiveBufferSize() method of datagram socket class is called, which are used to send and receive the buffer sizes. Then the method setReuseAddress() method of datagram socket class is called, and then the method getReuseAddress() method of datagram socket class is called to send and receive the reused address.
Then the method setBroadcast() method of datagram socket class is called, and then the method getBroadcast() method of datagram socket class is called to set and get the broadcast. Then the method setTrafficClass() method of datagram socket class is called, and then the method getTrafficClass() method of datagram socket class is called to set and get the traffic classes.
Then the method getChannel() method of datagram socket class is called, which returns a true or false. Then the method close() method of datagram socket class is called to close the socket. Then the method isClosed() method of datagram socket class is called to check if the socket is closed or not, and it returns a true if the socket is closed otherwise false.
Conclusion
In this tutorial, we understand the concept of DatagramSocket class in Java through definition, the syntax of DatagramSocket class in Java, working of DatagramSocket class in Java through examples and their outputs.
Recommended Articles
This is a guide to Java DatagramSocket. Here we discuss an introduction to DatagramSocket along with constructors, syntax, working, and respective example. You can also go through our other related articles to learn more –