Advanced Java Programming Practical 17
Question 1
Write a program using DatagramPacket and DatagramSocket to create chat application
Clientdatagram.java
Java
import java.io.*;
import java.net.*;
class Clientdatagram {
public static void main(String x[]) throws Exception
{
InetAddress receiver = InetAddress.getByName("localhost");
int port = 9999;
DatagramSocket mysocket = new DatagramSocket();
DataInputStream din = new DataInputStream(System.in);
while (true) {
System.out.println("Client enter message: ");
String msg = din.readLine();
byte[] sendmsg = msg.getBytes();
DatagramPacket sp = new DatagramPacket(sendmsg, sendmsg.length, receiver, port);
mysocket.send(sp);
int len = 100;
byte[] revmsg = new byte[100];
DatagramPacket rp = new DatagramPacket(revmsg, revmsg.length);
mysocket.receive(rp);
String received = new String(rp.getData(),0,rp.getLength());
System.out.println("Reply From server: " + received);
}
}
}
Serverdatagram.java
Java
import java.io.*;
import java.net.*;
class Serverdatagram
{
public static void main(String x[])throws Exception
{
int len=100,port=9999;
DatagramSocket ms= new DatagramSocket(port);
DataInputStream din = new DataInputStream(System.in);
byte[] revmsg=new byte[len];
System.out.println("Server running.......");
while(true)
{
DatagramPacket cp = new DatagramPacket(revmsg, revmsg.length);
ms.receive(cp);
String msg = new String(cp.getData(),0,cp.getLength());
System.out.println("From client: " + msg);
InetAddress ca = cp.getAddress();
int cport = cp.getPort();
System.out.println("Server enter message: ");
String replymsg = din.readLine();
byte[] sendmsg = replymsg.getBytes();
DatagramPacket sp = new DatagramPacket(sendmsg, sendmsg.length, ca, cport);
ms.send(sp);
}
}
}
Output

Question 2
Write a program using DatagramPacket and DataGramSocket to copy the contents of one file into other.
ClientFile.java
Java
import java.net.*;
import java.io.*;
public class ClientFile
{
public static void main(String args[])throws Exception
{
byte b[] = new byte[1024];
int ch;
System.out.println("Client started...");
FileInputStream f = new FileInputStream("clientfile.txt");
DatagramSocket ds = new DatagramSocket();
int i=0;
while((ch=f.read())!=-1)
{
b[i]=(byte)ch;
i++;
}
ds.send(new DatagramPacket(b,i,InetAddress.getLocalHost(),9999));
f.close();
System.out.println("File data sent to server");
}
}
ServerFile.java
Java
import java.net.*;
import java.io.*;
public class ServerFile
{
public static void main(String args[])throws IOException
{
byte b[]=new byte[3072];
DatagramSocket ds=new DatagramSocket(9999);
System.out.println("Server running......");
FileOutputStream f=new FileOutputStream("serverfile.txt");
DatagramPacket dp=new DatagramPacket(b,b.length);
ds.receive(dp);
String data = new String(dp.getData(),0,dp.getLength());
f.write(data.getBytes(), 0, data.length());
System.out.println("Data saved to file");
}
}
Output
