Friday, March 8, 2013
Today I am going to post programs related with networking. Actually today I am going to implement a connectionless packet delivery service using datagram packets. Each machine will be routed from one machine to another solely on the information contained in the packet. But to deliver this datagrams we will have to open a datagram socket programatically. This socket can be used for both sending and receiving datagrams. But to deliver packets we must know the IP address and port number. The following classes will be used for this -->
java.net.InetAddress : This class is used to get the IP address based on the host name using its static method getByName() .
java.net.DatagramSocket : This class represents a socket for sending and receiving datagram packets. Where possible, a newly constructed DatagramSocket has the SO_BROADCAST socket option enabled so as to allow the transmission of broadcast datagrams. In order to receive broadcast packets a DatagramSocket should be bound to the wildcard address.
java.net.DatagramPacket : Each message is routed from one machine to another based solely on information contained within that packet. Multiple packets sent from one machine to another might be routed differently, and might arrive in any order. Packet delivery is not guaranteed.
--------------------------------------------------------------------------------------------------------------------------
/* THE RECEIVER CODE */
import java.net.DatagramSocket;
import java.net.DatagramPacket;
import java.util.Scanner;
public class Receiver{
public static void main(String[] args)throws Exception{
String str="";
Scanner sc=new Scanner(System.in);
System.out.print("Enter port : ");
int PORT=sc.nextInt(); //receiver port
DatagramSocket rsock=new DatagramSocket(PORT); //creating socket
do{
byte buf[]=new byte[512];
DatagramPacket packet=new DatagramPacket(buf,512);
rsock.receive(packet); //receiving packets
str=new String(buf); //converting to string
System.out.println("Received : "+str);
}while(!str.contains("bye")); //goes on till bye is sent
rsock.close(); //closing socket
}
}
/* THE SENDER CODE */
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramSocket;
import java.net.DatagramPacket;
import java.net.InetAddress;
public class Sender{
public static void main(String[] args)throws Exception{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
DatagramSocket ssock=new DatagramSocket(); //binding socket to any
available port
System.out.print("Enter host name : ");
String str=br.readLine(); //getting host-name
System.out.print("Enter receiver's port : ");
int PORT=Integer.parseInt(br.readLine()); //getting receiver port
InetAddress addr=InetAddress.getByName(str); //getting IP of receiver
do{
System.out.print("Sending : ");
str=br.readLine(); //getting data to be sent
byte buf[]=str.getBytes();
//creating packet with receiver info inside packet
DatagramPacket packet=new DatagramPacket(buf,buf.length,addr,PORT);
ssock.send(packet); //sending packet
}while(!str.equals("bye"));
ssock.close(); //closing socket
}
}
--------------------------------------------------------------------------------------------------------------------------
Screenshots of output
--------------------------------------------------------------------------------------------------------------------------
DOWNLOAD the source package from Mediafire
DOWNLOAD the source package from 4shared
java.net.InetAddress : This class is used to get the IP address based on the host name using its static method getByName() .
java.net.DatagramSocket : This class represents a socket for sending and receiving datagram packets. Where possible, a newly constructed DatagramSocket has the SO_BROADCAST socket option enabled so as to allow the transmission of broadcast datagrams. In order to receive broadcast packets a DatagramSocket should be bound to the wildcard address.
java.net.DatagramPacket : Each message is routed from one machine to another based solely on information contained within that packet. Multiple packets sent from one machine to another might be routed differently, and might arrive in any order. Packet delivery is not guaranteed.
--------------------------------------------------------------------------------------------------------------------------
Java Source Code
--------------------------------------------------------------------------------------------------------------------------/* THE RECEIVER CODE */
import java.net.DatagramSocket;
import java.net.DatagramPacket;
import java.util.Scanner;
public class Receiver{
public static void main(String[] args)throws Exception{
String str="";
Scanner sc=new Scanner(System.in);
System.out.print("Enter port : ");
int PORT=sc.nextInt(); //receiver port
DatagramSocket rsock=new DatagramSocket(PORT); //creating socket
do{
byte buf[]=new byte[512];
DatagramPacket packet=new DatagramPacket(buf,512);
rsock.receive(packet); //receiving packets
str=new String(buf); //converting to string
System.out.println("Received : "+str);
}while(!str.contains("bye")); //goes on till bye is sent
rsock.close(); //closing socket
}
}
/* THE SENDER CODE */
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramSocket;
import java.net.DatagramPacket;
import java.net.InetAddress;
public class Sender{
public static void main(String[] args)throws Exception{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
DatagramSocket ssock=new DatagramSocket(); //binding socket to any
available port
System.out.print("Enter host name : ");
String str=br.readLine(); //getting host-name
System.out.print("Enter receiver's port : ");
int PORT=Integer.parseInt(br.readLine()); //getting receiver port
InetAddress addr=InetAddress.getByName(str); //getting IP of receiver
do{
System.out.print("Sending : ");
str=br.readLine(); //getting data to be sent
byte buf[]=str.getBytes();
//creating packet with receiver info inside packet
DatagramPacket packet=new DatagramPacket(buf,buf.length,addr,PORT);
ssock.send(packet); //sending packet
}while(!str.equals("bye"));
ssock.close(); //closing socket
}
}
--------------------------------------------------------------------------------------------------------------------------
Output
--------------------------------------------------------------------------------------------------------------------------Screenshots of output
![]() |
| Receiver |
![]() |
| Sender |
--------------------------------------------------------------------------------------------------------------------------
Download Links
--------------------------------------------------------------------------------------------------------------------------DOWNLOAD the source package from Mediafire
DOWNLOAD the source package from 4shared
Labels:Networking
Subscribe to:
Post Comments
(Atom)
Total Pageviews
Followers
Labels
- Algorithms (7)
- Annotation (3)
- Files (6)
- Generics (3)
- Graphics2D (5)
- Graphics2D-Images (7)
- Inheritance (2)
- J2EE (9)
- Java 8 (4)
- Java FAQs (19)
- JDBC (3)
- Networking (2)
- Packages (1)
- Reflection (4)
- Security (7)
- Sorting (2)
- Swing (3)
- Threads (3)
- Utils (3)


Thank you for sharing. I think it’s very important to do your research before you choose a courier service. I was referred a delivery service Minneapolis and not only were they affordable they were really nice!
ReplyDelete