Java Programming Practical 26

Question 1
Write a program using DatagramPacket and DatagramSocket to create chat application
ChatReceiver.java
Java
				import java.net.*;
import java.io.*;
import java.util.*;

class ChatReceiverThread extends Thread
{
	DatagramSocket ds;
	DatagramPacket dp;
	ChatReceiverThread(DatagramSocket s)
	{
		ds=s;
	}
	public void run()
	{
		while(true)
		{
			try
			{
				
			byte[] data =new byte[500];
			dp=new DatagramPacket(data,500);
			ds.receive(dp);
			String msg="";
			for(int i=0;data[i]!=0;i++)
				msg+=(char)data[i];
			System.out.println("From Sender: "+msg);
			}
			catch(Exception e)
			{
				System.out.println("Connection ended");
				System.exit(0);
				break;
			}
		}
	}
	
}

class ChatReceiver
{
	public static void main(String[ ] args)
	{
		try
		{
			DatagramSocket mySocket = new DatagramSocket(1234);
			Scanner sc=new Scanner(System.in);
			// Sending message
			InetAddress senderAddress = InetAddress.getLocalHost();
			int otherPort = 4321;
			new ChatReceiverThread(mySocket).start();
			while(true)
			{
				String messageToSend = sc.nextLine();
				byte[ ] sendBuffer = messageToSend.getBytes();
				DatagramPacket datagram = new DatagramPacket(sendBuffer, sendBuffer.length,senderAddress, otherPort);
				mySocket.send(datagram);
				if(messageToSend.equalsIgnoreCase("bye"))
					break;
			}
			mySocket.close( );
		}
		catch(Exception e)
		{
			e.printStackTrace( );
		}
	}
}

			
ChatSender.java
Java
				import java.net.*;
import java.io.*;
import java.util.*;

class ChatSenderThread extends Thread
{
	DatagramSocket ds;
	DatagramPacket dp;
	ChatSenderThread(DatagramSocket s)
	{
		ds=s;
	}
	public void run()
	{
		while(true)
		{
			try
			{
				
			byte[] data =new byte[500];
			dp=new DatagramPacket(data,500);
			ds.receive(dp);
			String msg="";
			for(int i=0;data[i]!=0;i++)
				msg+=(char)data[i];
			System.out.println("From Sender: "+msg);
			}
			catch(Exception e)
			{
				System.out.println("Connection ended");
				System.exit(0);
				break;
			}
		}
	}
	
}

class ChatSender
{
	public static void main(String[ ] args)
	{
		try
		{
			DatagramSocket mySocket = new DatagramSocket(4321);
			Scanner sc=new Scanner(System.in);
			// Sending message
			InetAddress senderAddress = InetAddress.getLocalHost();
			int otherPort = 1234;
			new ChatSenderThread(mySocket).start();
			while(true)
			{
				String messageToSend = sc.nextLine();
				byte[ ] sendBuffer = messageToSend.getBytes();
				DatagramPacket datagram = new DatagramPacket(sendBuffer, sendBuffer.length,senderAddress, otherPort);
				mySocket.send(datagram);
				if(messageToSend.equalsIgnoreCase("bye"))
					break;
			}
			mySocket.close( );
		}
		catch(Exception e)
		{
			e.printStackTrace( );
		}
	}
}

			
Output
Question 2
Write a program using DatagramPacket and DataGramSocket to copy the contents of one file into other.
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");
    }
}
			
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");
    }
}
			
Output

Leave a Comment

Your email address will not be published. Required fields are marked *