Home >Java >javaTutorial >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.
ADVERTISEMENT Popular Course in this category JAVA MASTERY - Specialization | 78 Course Series | 15 Mock TestsStart Your Free Software Development Course
Web development, programming languages, Software testing & others
Syntax
The syntax of java DatagramSocket is as follows:
DatagramSocket variable_name = new DatagramSocket();
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.
There are several constructors of the DatagramSocket class. They are:
Below are the example mentioned:
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.
然后调用数据报套接字类的setReceiveBufferSize()方法,然后调用数据报套接字类的getReceiveBufferSize()方法,用于发送和接收缓冲区大小。然后调用数据报套接字类的setReuseAddress()方法,然后调用数据报套接字类的getReuseAddress()方法来发送和接收重用地址。
然后调用数据报套接字类的setBroadcast()方法,然后调用数据报套接字类的getBroadcast()方法来设置和获取广播。然后调用数据报套接字类的setTrafficClass()方法,然后调用数据报套接字类的getTrafficClass()方法来设置和获取流量类别。
然后调用数据报套接字类的 getChannel() 方法,该方法返回 true 或 false。然后调用数据报套接字类的close()方法来关闭套接字。然后调用数据报套接字类的 isClosed() 方法来检查套接字是否关闭,如果套接字关闭则返回 true,否则返回 false。
在本教程中,我们通过定义了解 Java 中 DatagramSocket 类的概念、Java 中 DatagramSocket 类的语法、通过示例及其输出了解 Java 中 DatagramSocket 类的工作原理。
The above is the detailed content of Java DatagramSocket. For more information, please follow other related articles on the PHP Chinese website!