Home > Java > javaTutorial > Java DatagramSocket

Java DatagramSocket

王林
Release: 2024-08-30 16:16:30
Original
543 people have browsed it

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 Tests

Start 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();
Copy after login

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();
}
}
Copy after login

Output:

Java DatagramSocket

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());
}
}
Copy after login

Output:

Java DatagramSocket

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!

Related labels:
source:php
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template