You are on page 1of 9

Advanced Java Programming

Name : Pranjal Shahane CO5I Roll No. : 06

Practical : 17

Q. Write a program using datagrampacket and datagram socket to create


chat application
Server CODE:
import java.io.*;
import java.net.*;

public class practical17AServer {


public static void main(String[] args) {
DatagramSocket serverSocket = null;
try {
serverSocket = new DatagramSocket(9876); // Server listens on port 9876
System.out.println("Server is running. Waiting for clients...");
while (true) {
byte[] receiveData = new byte[1024];
DatagramPacket receivePacket = new DatagramPacket(receiveData,
receiveData.length);
serverSocket.receive(receivePacket);
String receivedMessage = new String(receivePacket.getData(), 0,
receivePacket.getLength());
InetAddress clientAddress = receivePacket.getAddress();
int clientPort = receivePacket.getPort();
System.out.println("Client (" + clientAddress.getHostAddress() + ":" + clientPort +
"): " + receivedMessage);
String responseMessage = "Server received: " + receivedMessage;
byte[] responseData = responseMessage.getBytes();
DatagramPacket responsePacket = new DatagramPacket(responseData,
responseData.length, clientAddress, clientPort);
Advanced Java Programming

serverSocket.send(responsePacket);
}
} catch (IOException e) {

e.printStackTrace();
} finally {
if (serverSocket != null && !serverSocket.isClosed()) {
serverSocket.close();
}
}
}
}
OUTPUT:

Client CODE:
import java.io.*;
import java.net.*;
import java.util.Scanner;

public class practical17AClient {


public static void main(String[] args) {
DatagramSocket clientSocket = null;
try {
clientSocket = new DatagramSocket();
InetAddress serverAddress = InetAddress.getByName("localhost"); // Change to the
server's IP
Advanced Java Programming

Scanner scanner = new Scanner(System.in);


while (true) {
System.out.print("Enter a message to send (or 'exit' to quit): ");
String message = scanner.nextLine();
if ("exit".equalsIgnoreCase(message)) {
break;
}
byte[] sendData = message.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length,
serverAddress, 9876);
clientSocket.send(sendPacket);
byte[] receiveData = new byte[1024];
DatagramPacket receivePacket = new DatagramPacket(receiveData,
receiveData.length);
clientSocket.receive(receivePacket);
String receivedMessage = new String(receivePacket.getData(), 0,
receivePacket.getLength());
System.out.println("Server: " + receivedMessage);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (clientSocket != null && !clientSocket.isClosed()) {
clientSocket.close();
}
}
}
}
Advanced Java Programming

OUTPUT:

Q. Write a program using datagrampacket and datagram socket to copy


the content of one file to another

Server CODE:

import java.io.*;
import java.net.*;
public class FileCopyServer {
public static void main(String[] args) {
DatagramSocket serverSocket = null;
FileOutputStream fileOutputStream = null;
try {
serverSocket = new DatagramSocket(9876); // Server listens on
port 9876
fileOutputStream = new FileOutputStream("received_file.txt");
byte[] receiveData = new byte[1024];
DatagramPacket receivePacket = new
DatagramPacket(receiveData, receiveData.length);
System.out.println("Server is running. Waiting for file...");
while (true) {
Advanced Java Programming(22517)
Advanced Java Programming

serverSocket.receive(receivePacket);
int bytesRead = receivePacket.getLength();
if (bytesRead <= 0) {
break; // End of file
}
fileOutputStream.write(receivePacket.getData(), 0,
bytesRead);
}
System.out.println("File received successfully.");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fileOutputStream != null) {
fileOutputStream.close();
}
if (serverSocket != null && !serverSocket.isClosed()) {
serverSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
OUTPUT:
Advanced Java Programming

Client CODE:
import java.io.*;
import java.net.*;

public class practical17Bclient {


public static void main(String[] args) {
DatagramSocket clientSocket = null;
FileInputStream fileInputStream = null;
try {
clientSocket = new DatagramSocket();
InetAddress serverAddress = InetAddress.getLocalHost();
fileInputStream = new FileInputStream("source_file.txt");
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fileInputStream.read(buffer)) != -1) {
DatagramPacket sendPacket = new DatagramPacket(buffer,
bytesRead, serverAddress, 9876); // Server port 9876
clientSocket.send(sendPacket);
}
DatagramPacket endPacket = new DatagramPacket(new byte[0], 0, serverAddress,
9876);
clientSocket.send(endPacket);
System.out.println("File sent successfully.");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fileInputStream != null) {
Advanced Java Programming

fileInputStream.close();
}
if (clientSocket != null && !clientSocket.isClosed()) {
clientSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
OUTPUT:

Q. Write a program using datagrampacket and datagram socket to


transfer file from one location to another

Server CODE:
import java.io.*;
import java.net.*;

public class practical17Cserver {


public static void main(String[] args) {
try {
DatagramSocket socket = new DatagramSocket(12346);

byte[] buffer = new byte[1024];


DatagramPacket packet = new DatagramPacket(buffer,
Advanced Java Programming

buffer.length);
FileOutputStream fileOutputStream = new
FileOutputStream("destination.txt");
while (true) {
socket.receive(packet);
fileOutputStream.write(packet.getData(), 0,
packet.getLength());
if (packet.getLength() < buffer.length) {
break;
}
}
fileOutputStream.close();
socket.close();
System.out.println("File received successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
OUTPUT:

Client CODE:
import java.io.*;
import java.net.*;
Advanced Java Programming

public class practical17Cclient {


public static void main(String[] args) {
String sourceFileName = "source_file.txt";
try {
DatagramSocket socket = new DatagramSocket();
InetAddress serverAddress = InetAddress.getByName("localhost");
FileInputStream fileInputStream = new
FileInputStream(sourceFileName);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fileInputStream.read(buffer)) != -1) {
DatagramPacket packet = new DatagramPacket(buffer, bytesRead,
serverAddress, 12345);
socket.send(packet);
}
fileInputStream.close();
socket.close();
System.out.println("File sent successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
OUTPUT:

You might also like