Java Networking – Datagram Socket and DatagramPacket
Datagrams:DatagramSocket Class
DatagramSocket class represents connectionless socket for sending and receiving datagram packets.
A Datagram is basically an information but there is no guarantee of its content ,arrival or arrival time.
Constructor
| Method Description | |
| DatagramSocket() | It creats a datagram socket and bind its with the available port number on the local host machine |
| DatagramSocket(int port) | It creats a datagram socket and bind its with the given port number |
| DatagramSocket(int port,inetAddress address) | It creats a datagram socket and bind its with the specified port number and host address |
Datagrams : DatagramPacket Class
Java DatagramPacket is message that can be sent or received
If you send multiple packets it may arrive in any order
Additionally packet delivery is not guaranteed
Constructors
| Method Description | |
| DatagramPacket(byte[] bfr,int length) | It creats a datagram packet ,this constructor is used to receive the packets |
| DatagramPacket(byte[] bfr,int length,InetAddress address,int port) | It creats a datagram packet ,this constructor is used to send the packets |
| DatagramPacket(byte[] bfr,int offset,int length) | It creats a datagram packet , for receiving packets of length length, specifying an offset into the buffer. |
| DatagramPacket(byte[] bfr,int offset,int length,InetAddress address,int port) | It creates datagram packet for sending packets of length length with offset offset to the specified port number on the specified host. |
| DatagramPacket(byte[] bfr,int offset,int length,SocketAddress address) | It creates datagram packet for sending packets of length length with offset ioffset to the specified port number on the specified host. |
| DatagramPacket(byte[] bfr,int length,SocketAddress address) | It creates datagram packet for sending packets of length length to the specified port number on the specified host. |
Send DatagramPacket by DatagramSocket
import java.io.*;
import java.net.*;
public class SendData {
public static void main(String[] args) throws Exception {
DatagramSocket ds = new DatagramSocket();
String str = "Message Sent by Datagram Socket";
InetAddress ip = InetAddress.getByName("127.0.0.1");
DatagramPacket dp = new DatagramPacket(str.getBytes(), str.length(), ip, 3000);
ds.send(dp);
ds.close();
}
}Recieve DatagramPacket by DatagramSocket
import java.io.*;
import java.net.*;
public class receiveData {
public static void main(String[] args) throws Exception {
DatagramSocket dsocket = new DatagramSocket(3000);
byte[] buf = new byte[1024];
DatagramPacket dpacket = new DatagramPacket(buf, 1024);
dsocket.receive(dpacket);
String str = new String(dpacket.getData(), 0, dpacket.getLength());
System.out.println(str);
ds.close();
}
}Output:
Message Sent by Datagram Socket
Message Sent by Datagram Socket