LAB ASSIGNMENT - 5
Problem Statement : Socket Programming using C/C++/Java.
a. TCP Client, TCP Server
b. UDP Client, UDP Serve
Code-
TCPServer.java:
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(6789);
System.out.println(
"Server is running and waiting for client connection..."
);
Socket connectionSocket = serverSocket.accept();
System.out.println("Client connected!");
BufferedReader inFromClient = new BufferedReader(
new InputStreamReader(connectionSocket.getInputStream())
);
DataOutputStream outToClient = new DataOutputStream(
connectionSocket.getOutputStream()
);
String clientMessage = inFromClient.readLine();
System.out.println("Received from client: " + cl ientMessage);
// Convert message to uppercase
String serverMessage = clientMessage.toUpperCase() + "\n";
// Send modified message to client
outToClient.writeBytes(serverMessage);
connectionSocket.close(); // Close the connection
serverSocket.close(); // Close the server socket
}
}
TCPClient.java:
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) throws IOException {
String sentence;
String modifiedSentence;
// Input from user
BufferedReader userInput = new BufferedReader(
new InputStreamReader(System.in)
);
// Connect to server running on localhost and port 6789
Socket clientSocket = new Socket("localhost", 6789);
DataOutputStream outToServer = new DataOutputStream(
clientSocket.getOutputStream()
);
BufferedReader inFromServer = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream())
);
System.out.print("Enter message: ");
sentence = userInput.readLine(); // Read input from the user
// Send input to server
outToServer.writeBytes(sentence + "\n");
// Read response from server
modifiedSentence = inFromServer.readLine();
System.out.println("Received from server: " + modifiedSentence);
clientSocket.close(); // Close the connection
}
}
Output-
UDPServer.java:
import java.net.*;
public class UDPServer {
public static void main(String[] args) throws Exception {
// Server listens on port 9876
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] receiveData = new byte[1024];
byte[] sendData;
System.out.println(
"Server is running and waiting for client message..."
);
while (true) {
DatagramPacket receivePacket = new DatagramPacket(
receiveData, receiveData.length
);
// Receive packet from client
serverSocket.receive(receivePacket);
String clientMessage = new String(
receivePacket.getData(), 0, receivePacket.getLength()
);
System.out.println("Received from client: " + clientMessage);
// Get client's IP address
InetAddress clientIPAddress = receivePacket.getAddress();
// Get client's port
int clientPort = receivePacket.getPort();
// Convert message to uppercase
String serverMessage = clientMessage.toUpperCase();
sendData = serverMessage.getBytes();
DatagramPacket sendPacket = new DatagramPacket(
sendData, sendData.length, clientIPAddress, clientPort
);
serverSocket.send(sendPacket); // Send response to client
}
}
}
UDPClient.java:
import java.io.*;
import java.net.*;
public class UDPClient {
public static void main(String[] args) throws Exception {
BufferedReader userInput = new BufferedReader(
new InputStreamReader(System.in));
DatagramSocket clientSocket = new DatagramSocket();
// Server running on localhost
InetAddress serverIPAddress = InetAddress.getByName("localhost");
byte[] sendData;
byte[] receiveData = new byte[1024];
System.out.print("Enter message: ");
String sentence = userInput.readLine(); // Read input from user
sendData = sentence.getBytes(); // Convert to bytes
DatagramPacket sendPacket = new DatagramPacket(
sendData, sendData.length, serverIPAddress, 9876);
clientSocket.send(sendPacket); // Send packet to server
DatagramPacket receivePacket = new DatagramPacket(
receiveData, receiveData.length);
clientSocket.receive(receivePacket); // Receive packet from server
String serverMessage = new String(
receivePacket.getData(), 0, receivePacket.getLength());
System.out.println("Received from server: " + serverMessage);
clientSocket.close(); // Close the connection
}
}
Output-