Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 20

210470107055

Advance Java Programming


Assignment – 1
5. Write a java program to demonstrate methods of InetAddress.
import java.net.InetAddress;
import java.net.UnknownHostException;

public class InetAddressDemo {

public static void main(String[] args) {


try {
// Get the local host address
InetAddress localHost = InetAddress.getLocalHost();
System.out.println("Local Host Address: " +
localHost.getHostAddress());
System.out.println("Local Host Name: " +
localHost.getHostName());

// Get IP addresses for a given host name


String hostName = "www.google.com";
InetAddress[] addresses =
InetAddress.getAllByName(hostName);
System.out.println("IP Addresses for " + hostName + ":");

1
210470107055

for (InetAddress address : addresses) {


System.out.println(address.getHostAddress());
}

// Check if a particular IP address is reachable


String ipAddress = "8.8.8.8";
InetAddress inetAddress =
InetAddress.getByName(ipAddress);
System.out.println("Is " + ipAddress + " reachable? " +
inetAddress.isReachable(5000)); // Timeout in milliseconds

} catch (UnknownHostException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}

2
210470107055

6. Write a java Connection less (UDP) Program to do the


following:
Sender will send : Welcome to Gujarat Technological UNIVERSITY
Receiver will send back to sender: ytisrevinu LACIGOLONHCEt
TARAJUg TO EMOCLEw
 Sender (UDPClient.java):
import java.io.IOException;
import java.net.*;

public class Sender {

public static void main(String[] args) throws IOException {


// Sender information
int port = 12345;
InetAddress address =
InetAddress.getByName("localhost"); // Replace with actual
receiver IP if needed

// Message to send
String message = "Welcome to Gujarat Technological
UNIVERSITY";

// Create datagram socket


DatagramSocket socket = new DatagramSocket();

3
210470107055

// Create datagram packet


byte[] data = message.getBytes();
DatagramPacket packet = new DatagramPacket(data,
data.length, address, port);

// Send message
socket.send(packet);

// Close socket
socket.close();

System.out.println("Message sent: " + message);


}
}
 Receiver (UDPServer.java):

import java.io.IOException;
import java.net.*;

public class Receiver {

public static void main(String[] args) throws IOException {


// Receiver information
int port = 12345;

// Create datagram socket


DatagramSocket socket = new DatagramSocket(port);

4
210470107055

// Create buffer to receive data


byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer,
buffer.length);

// Receive data
socket.receive(packet);

// Process received data


String receivedMessage = new String(packet.getData(), 0,
packet.getLength());
System.out.println("Received message: " +
receivedMessage);

// Create response message (reversed and with alternating


capitalization)
StringBuilder responseBuilder = new StringBuilder();
for (int i = 0; i < receivedMessage.length(); i++) {
char c = receivedMessage.charAt(i);
responseBuilder.append(Character.isUpperCase(c) ?
Character.toLowerCase(c) : Character.toUpperCase(c));
}
String responseMessage =
responseBuilder.reverse().toString();

// Send response
InetAddress address = packet.getAddress();
int senderPort = packet.getPort();
packet.setData(responseMessage.getBytes());
packet.setAddress(address);
packet.setPort(senderPort);
socket.send(packet);

5
210470107055

// Close socket
socket.close();

System.out.println("Response sent: " + responseMessage);


}
}

7. Write a java Connection less (UDP) Program for chat


application.

UDPServer.java:
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UDPServer {


public static void main(String[] args) {
try {
// Receiver socket with a specific port
number
DatagramSocket socket = new
DatagramSocket(9876);

System.out.println("Server is
running...");

6
210470107055

while (true) {
// Buffer to store received data
byte[] receiveData = new byte[1024];

// Create a DatagramPacket to receive


the data
DatagramPacket receivePacket = new
DatagramPacket(receiveData, receiveData.length);

// Receive the packet


socket.receive(receivePacket);

// Extract the message from the


received packet
String receivedMessage = new
String(receivePacket.getData(), 0,
receivePacket.getLength());

System.out.println("Client: " +
receivedMessage);

// Check for an exit condition


(e.g., "bye" to end the chat)
if
(receivedMessage.trim().equalsIgnoreCase("bye"))
{
System.out.println("Server:
Chat ended.");
break;
}
}

// Close the socket


socket.close();

7
210470107055

} catch (Exception e) {
e.printStackTrace();
}
}
}

 UDPClient.java:

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

public class UDPClient {


public static void main(String[] args) {
try {
// Sender socket with an arbitrary port
number
DatagramSocket socket = new
DatagramSocket();

// Scanner for user input


Scanner scanner = new
Scanner(System.in);

// Receiver's address and port


InetAddress receiverAddress =
InetAddress.getLocalHost();
int receiverPort = 9876;

// Client loop for sending messages


while (true) {

8
210470107055

// Get user input


System.out.print("You: ");
String message =
scanner.nextLine();

// Convert the message to bytes


byte[] sendData =
message.getBytes();

// Create a DatagramPacket with the


message, receiver's address, and port
DatagramPacket sendPacket = new
DatagramPacket(sendData, sendData.length,
receiverAddress,
receiverPort);

// Send the packet


socket.send(sendPacket);

// Check for an exit condition


(e.g., "bye" to end the chat)
if
(message.trim().equalsIgnoreCase("bye")) {
System.out.println("Chat
ended.");
break;
}
}

// Close the scanner and socket


scanner.close();
socket.close();

} catch (Exception e) {

9
210470107055

e.printStackTrace();
}
}
}

8. Write a client-server program using TCP and UDP where the


client sends 10 numbers and server responds with
the numbers in sorted order.

 Server (TCP):

import java.io.*;
import java.net.*;
import java.util.Arrays;

public class SortTcpServer {


public static void main(String[] args) {
try {
ServerSocket serverSocket = new
ServerSocket(12345);
System.out.println("TCP Server is
waiting for client connection on port 12345...");

10
210470107055

Socket clientSocket =
serverSocket.accept();
System.out.println("TCP Client
connected: " + clientSocket.getInetAddress());

// Create BufferedReader to read data


from the client
BufferedReader in = new
BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));

// Create PrintWriter to send data to


the client
PrintWriter out = new
PrintWriter(clientSocket.getOutputStream(), true);

// Read 10 numbers from the client


int[] numbers = new int[10];
for (int i = 0; i < 10; i++) {
numbers[i] =
Integer.parseInt(in.readLine());
}

Arrays.sort(numbers);

out.println("Sorted Numbers: " +


Arrays.toString(numbers));

clientSocket.close();
System.out.println("TCP Connection
closed with client.");

} catch (IOException e) {

11
210470107055

e.printStackTrace();
}
}
}

 Client (TCP):

import java.io.*;
import java.net.*;

public class SortTcpClient {


public static void main(String[] args) {
try {
Socket socket = new Socket("localhost",
12345);
System.out.println("Connected to TCP
Server.");

BufferedReader in = new
BufferedReader(new
InputStreamReader(socket.getInputStream()));

// Create PrintWriter to send data to


the server
PrintWriter out = new
PrintWriter(socket.getOutputStream(), true);

// Enter 10 numbers one by one


for (int i = 0; i < 10; i++) {
System.out.print("Enter number " +
(i + 1) + ": ");

12
210470107055

int num = Integer.parseInt(new


BufferedReader(new
InputStreamReader(System.in)).readLine());
out.println(num);
}

// Read and print the sorted numbers


received from the server
String sortedNumbers = in.readLine();
System.out.println("Sorted Numbers
received from TCP Server: " + sortedNumbers);

socket.close();

} catch (IOException e) {
e.printStackTrace();
}
}
}

9.Write a TCP Client-Server program to get the Date & Time


details from Server on the Client request.

DateTimeServer.java:
13
210470107055

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class DateTimeClient {


public static void main(String[] args) {
final String serverAddress = "localhost";
final int serverPort = 12345;

try (Socket socket = new


Socket(serverAddress, serverPort);
PrintWriter out = new
PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new
BufferedReader(new
InputStreamReader(socket.getInputStream()))) {
// Send a request to the server
out.println("GetDateTime");

// Receive and print the response


String serverResponse = in.readLine();
System.out.println("Server Date and
Time: " + serverResponse);
} catch (IOException e) {
e.printStackTrace();
}
}
}

DateTimeClient.java:

14
210470107055

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTimeServer {


public static void main(String[] args) {
final int portNumber = 12345;

try (ServerSocket serverSocket = new


ServerSocket(portNumber)) {
System.out.println("Server is listening
on port " + portNumber);

while (true) {
Socket clientSocket =
serverSocket.accept();
System.out.println("Client
connected: " + clientSocket.getInetAddress());

try (
PrintWriter out = new
PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new
BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));)
{
String clientMessage =
in.readLine();

15
210470107055

if
("GetDateTime".equals(clientMessage)) {
String dateTime =
getCurrentDateTime();
out.println(dateTime);
System.out.println("Sent
date and time to the client.");
} else {
System.out.println("Unknown
request from client: " + clientMessage);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
clientSocket.close();
System.out.println("Client
disconnected.");
}
}
} catch (IOException e) {
e.printStackTrace();
}
}

private static String getCurrentDateTime() {


SimpleDateFormat dateFormat = new
SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return dateFormat.format(new Date());
}
}

16
210470107055

10. Write a client server program using TCP where client sends
two numbers and server responds with sum of
them.
 AdditionServer.java:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class AdditionServer {


public static void main(String[] args) {
final int portNumber = 12345;

try (ServerSocket serverSocket = new


ServerSocket(portNumber)) {
System.out.println("Server is listening
on port " + portNumber);

while (true) {
Socket clientSocket =
serverSocket.accept();
System.out.println("Client
connected: " + clientSocket.getInetAddress());

try (
PrintWriter out = new
PrintWriter(clientSocket.getOutputStream(), true);

17
210470107055

BufferedReader in = new
BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));)
{
// Receive two numbers from the
client
int num1 =
Integer.parseInt(in.readLine());
int num2 =
Integer.parseInt(in.readLine());

// Calculate the sum


int sum = num1 + num2;

// Send the sum back to the


client
out.println("Sum: " + sum);
System.out.println("Sent sum to
the client: " + sum);
} catch (IOException e) {
e.printStackTrace();
} finally {
clientSocket.close();
System.out.println("Client
disconnected.");
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

18
210470107055

 AdditionClient.java:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class AdditionClient {


public static void main(String[] args) {
final String serverAddress = "localhost";
final int serverPort = 12345;

try (Socket socket = new


Socket(serverAddress, serverPort);
PrintWriter out = new
PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new
BufferedReader(new
InputStreamReader(socket.getInputStream()))) {
// Get two numbers from the user
int num1 = getUserInput("Enter the
first number: ");
int num2 = getUserInput("Enter the
second number: ");

// Send the numbers to the server


out.println(num1);
out.println(num2);

// Receive and print the server's


response
String serverResponse = in.readLine();

19
210470107055

System.out.println("Server Response: "


+ serverResponse);
} catch (IOException e) {
e.printStackTrace();
}
}

private static int getUserInput(String prompt)


{
System.out.print(prompt);
try {
BufferedReader reader = new
BufferedReader(new InputStreamReader(System.in));
return
Integer.parseInt(reader.readLine());
} catch (IOException |
NumberFormatException e) {
e.printStackTrace();
return 0;
}
}
}

20

You might also like