Java Network Programming & Socket Communications
1. TCP Client-Server Communication (Message Passing)
Question: Write a program to implement TCP Client-Server Communication (Message Passing) using
Sockets.
Server ([Link])
import [Link].*;
import [Link].*;
public class TCPServer {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(5000);
[Link]("TCP Server listening on port 5000...");
Socket socket = [Link]();
[Link]("Client connected.");
BufferedReader reader = new BufferedReader(
new InputStreamReader([Link]()));
PrintWriter writer = new PrintWriter([Link](), true);
String clientMessage = [Link]();
[Link]("Received from client: " + clientMessage);
[Link]("Hello from TCP Server!");
[Link]();
[Link]();
} catch (IOException e) {
[Link]();
}
}
}
Client ([Link])
import [Link].*;
import [Link].*;
public class TCPClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 5000);
PrintWriter writer = new PrintWriter([Link](), true);
BufferedReader reader = new BufferedReader(
new InputStreamReader([Link]()));
[Link]("Hello Server, I am the TCP Client.");
String response = [Link]();
[Link]("Server says: " + response);
[Link]();
} catch (IOException e) {
[Link]();
}
}
}
1
1. TCP Client-Server Communication (Message Passing) - Output
Server Terminal:
javac [Link]
java TCPServer
TCP Server listening on port 5000...
Client connected.
Received from client: Hello Server, I am the TCP Client.
Client Terminal:
javac [Link]
java TCPClient
Server says: Hello from TCP Server!
3
2. UDP Client-Server Communication (Message Passing)
Question: Write a program to implement UDP Client-Server Communication (Message Passing) using
Sockets.
Server ([Link])
import [Link].*;
public class UDPServer {
public static void main(String[] args) {
try {
DatagramSocket socket = new DatagramSocket(5001);
byte[] buffer = new byte[1024];
[Link]("UDP Server listening on port 5001...");
DatagramPacket packet = new DatagramPacket(buffer, [Link]);
[Link](packet);
String message = new String([Link](), 0, [Link]());
[Link]("Received from client: " + message);
String reply = "Hello from UDP Server!";
byte[] replyData = [Link]();
DatagramPacket replyPacket = new DatagramPacket(
replyData, [Link], [Link](), [Link]());
[Link](replyPacket);
[Link]();
} catch (Exception e) {
[Link]();
}
}
}
Client ([Link])
import [Link].*;
public class UDPClient {
public static void main(String[] args) {
try {
DatagramSocket socket = new DatagramSocket();
InetAddress address = [Link]("localhost");
String message = "Hello Server, I am the UDP Client.";
byte[] data = [Link]();
DatagramPacket packet = new DatagramPacket(data, [Link], address, 5001);
[Link](packet);
byte[] buffer = new byte[1024];
DatagramPacket replyPacket = new DatagramPacket(buffer, [Link]);
[Link](replyPacket);
String reply = new String([Link](), 0, [Link]());
[Link]("Server says: " + reply);
[Link]();
} catch (Exception e) {
[Link]();
}
}
}
4
2. UDP Client-Server Communication (Message Passing) - Output
Server Terminal:
javac [Link]
java UDPServer
UDP Server listening on port 5001...
Received from client: Hello Server, I am the UDP Client.
Client Terminal:
javac [Link]
java UDPClient
Server says: Hello from UDP Server!
6
3. TCP Client-Server Communication (File Passing)
Question: Write a program to implement TCP Client-Server Communication (File Passing) using Sockets.
Server ([Link])
import [Link].*;
import [Link].*;
public class FileServer {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(5002);
[Link]("File Server waiting on port 5002...");
Socket socket = [Link]();
[Link]("Client connected.");
FileInputStream fileInput = new FileInputStream("[Link]");
OutputStream output = [Link]();
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = [Link](buffer)) != -1) {
[Link](buffer, 0, bytesRead);
}
[Link]("File sent successfully.");
[Link]();
[Link]();
[Link]();
} catch (IOException e) {
[Link]();
}
}
}
Client ([Link])
import [Link].*;
import [Link].*;
public class FileClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 5002);
InputStream input = [Link]();
FileOutputStream fileOutput = new FileOutputStream("received_sample.txt");
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = [Link](buffer)) != -1) {
[Link](buffer, 0, bytesRead);
}
[Link]("File received as received_sample.txt");
[Link]();
[Link]();
} catch (IOException e) {
[Link]();
}
}
}
7
3. TCP Client-Server Communication (File Passing) - Output
Before Running:
[Link] contains: This file is sent using TCP socket programming.
Server Terminal:
File Server waiting on port 5002...
Client connected.
File sent successfully.
Client Terminal:
File received as received_sample.txt
received_sample.txt:
This file is sent using TCP socket programming.
8
4. TCP Plain Text Sent and Cipher Text Received
Question: Write a program to implement TCP Client-Server Communication (Message Passing) using
Sockets where Server will send Plain text message but Client will receive Cipher text message.
Server ([Link])
import [Link].*;
import [Link].*;
public class CipherServer {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(5003);
Socket socket = [Link]();
PrintWriter writer = new PrintWriter([Link](), true);
String plainText = "HELLO CLIENT";
[Link](plainText);
[Link]("Plain text sent: " + plainText);
[Link]();
[Link]();
} catch (IOException e) {
[Link]();
}
}
}
Client ([Link])
import [Link].*;
import [Link].*;
public class CipherClient {
static String encrypt(String text, int shift) {
StringBuilder cipher = new StringBuilder();
for (char ch : [Link]()) {
if ([Link](ch)) {
char base = [Link](ch) ? 'A' : 'a';
ch = (char) ((ch - base + shift) % 26 + base);
}
[Link](ch);
}
return [Link]();
}
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 5003);
BufferedReader reader = new BufferedReader(
new InputStreamReader([Link]()));
String plainText = [Link]();
String cipherText = encrypt(plainText, 3);
[Link]("Plain text received: " + plainText);
[Link]("Cipher text: " + cipherText);
[Link]();
} catch (IOException e) {
[Link]();
9
}
}
}
10
4. TCP Plain Text Sent and Cipher Text Received - Output
Server Terminal:
Plain text sent: HELLO CLIENT
Client Terminal:
Plain text received: HELLO CLIENT
Cipher text: KHOOR FOLHQW
11
5. TCP Message Passing with Particular String Length
Question: Write a program to implement TCP Client-Server Communication (Message Passing) using
Sockets where Server will send Plain text message but Client will receive a particular part (String Length)
of that sent message.
Server ([Link])
import [Link].*;
import [Link].*;
public class StringServer {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(5004);
Socket socket = [Link]();
PrintWriter writer = new PrintWriter([Link](), true);
String message = "Computer Networking Laboratory";
[Link](message);
[Link]("Message sent: " + message);
[Link]();
[Link]();
} catch (IOException e) {
[Link]();
}
}
}
Client ([Link])
import [Link].*;
import [Link].*;
public class StringClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 5004);
BufferedReader reader = new BufferedReader(
new InputStreamReader([Link]()));
int length = 8;
String message = [Link]();
String part = [Link](0, length);
[Link]("Complete message: " + message);
[Link]("Required length: " + length);
[Link]("Part received: " + part);
[Link]();
} catch (IOException e) {
[Link]();
}
}
}
12
5. TCP Message Passing with Particular String Length - Output
Server Terminal:
Message sent: Computer Networking Laboratory
Client Terminal:
Complete message: Computer Networking Laboratory
Required length: 8
Part received: Computer
13
6. TCP File Passing with File Selection
Question: Write a program to implement TCP Client-Server Communication (File Passing) using Sockets
where Client can choose selected files from the list of files provided by the Server.
Server ([Link])
import [Link].*;
import [Link].*;
public class SelectFileServer {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(5005);
Socket socket = [Link]();
BufferedReader reader = new BufferedReader(
new InputStreamReader([Link]()));
PrintWriter writer = new PrintWriter([Link](), true);
File folder = new File("server_files");
File[] files = [Link]();
for (File file : files) {
[Link]([Link]());
}
[Link]("END");
String selectedFile = [Link]();
File fileToSend = new File(folder, selectedFile);
if ([Link]()) {
[Link]("FOUND");
FileInputStream fileInput = new FileInputStream(fileToSend);
OutputStream output = [Link]();
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = [Link](buffer)) != -1) {
[Link](buffer, 0, bytesRead);
}
[Link]();
[Link]("Sent file: " + selectedFile);
} else {
[Link]("NOT_FOUND");
}
[Link]();
[Link]();
} catch (IOException e) {
[Link]();
}
}
}
Client ([Link])
import [Link].*;
import [Link].*;
public class SelectFileClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 5005);
14
BufferedReader reader = new BufferedReader(
new InputStreamReader([Link]()));
PrintWriter writer = new PrintWriter([Link](), true);
[Link]("Available files:");
String fileName;
while (!(fileName = [Link]()).equals("END")) {
[Link](fileName);
}
String selectedFile = "[Link]";
[Link](selectedFile);
String status = [Link]();
if ([Link]("FOUND")) {
FileOutputStream fileOutput =
new FileOutputStream("downloaded_" + selectedFile);
InputStream input = [Link]();
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = [Link](buffer)) != -1) {
[Link](buffer, 0, bytesRead);
}
[Link]();
[Link]("Downloaded: downloaded_" + selectedFile);
} else {
[Link]("Selected file not found.");
}
[Link]();
} catch (IOException e) {
[Link]();
}
}
}
15
6. TCP File Passing with File Selection - Output
Server Folder:
server_files/[Link]
server_files/[Link]
server_files/[Link]
Server Terminal:
Sent file: [Link]
Client Terminal:
Available files:
[Link]
[Link]
[Link]
Downloaded: downloaded_notes.txt
16
7. TCP Password Authentication with Three Attempts
Question: Write a program to implement TCP Client-Server Communication using Sockets where
Server-Client Connection can be built using Given Password, then Password can be changed but with
wrong password the message will come as "Try Again" and maximum 3 Attempts are available.
Server ([Link])
import [Link].*;
import [Link].*;
public class PasswordServer {
public static void main(String[] args) {
String password = "admin123";
try {
ServerSocket serverSocket = new ServerSocket(5006);
Socket socket = [Link]();
BufferedReader reader = new BufferedReader(
new InputStreamReader([Link]()));
PrintWriter writer = new PrintWriter([Link](), true);
boolean authenticated = false;
for (int attempt = 1; attempt <= 3; attempt++) {
String receivedPassword = [Link]();
if ([Link](password)) {
[Link]("Access Granted");
authenticated = true;
break;
} else {
[Link]("Try Again");
}
}
if (authenticated) {
String newPassword = [Link]();
password = newPassword;
[Link]("Password Changed Successfully");
[Link]("New password: " + password);
} else {
[Link]("Maximum attempts finished.");
}
[Link]();
[Link]();
} catch (IOException e) {
[Link]();
}
}
}
Client ([Link])
import [Link].*;
import [Link].*;
public class PasswordClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 5006);
BufferedReader reader = new BufferedReader(
17
new InputStreamReader([Link]()));
PrintWriter writer = new PrintWriter([Link](), true);
String[] attempts = {"wrong1", "wrong2", "admin123"};
for (String password : attempts) {
[Link](password);
String response = [Link]();
[Link]("Server: " + response);
if ([Link]("Access Granted")) {
[Link]("network456");
[Link]("Server: " + [Link]());
break;
}
}
[Link]();
} catch (IOException e) {
[Link]();
}
}
}
18
7. TCP Password Authentication with Three Attempts - Output
Server Terminal:
New password: network456
Client Terminal:
Server: Try Again
Server: Try Again
Server: Access Granted
Server: Password Changed Successfully
Wrong Password Case:
Server: Try Again
Server: Try Again
Server: Try Again
Connection is closed after maximum 3 attempts.
19
8. TCP Server Connected to Many Clients
Question: Write a program to implement TCP Client-Server Communication (Message Passing) using
Sockets where Server can be connected to many clients and all clients will accept the same message sent
by the Server.
Server ([Link])
import [Link].*;
import [Link].*;
import [Link].*;
public class MultiClientServer {
public static void main(String[] args) {
ArrayList<Socket> clients = new ArrayList<>();
try {
ServerSocket serverSocket = new ServerSocket(5007);
[Link]("Server waiting for 3 clients...");
while ([Link]() < 3) {
Socket socket = [Link]();
[Link](socket);
[Link]("Client connected: " + [Link]());
}
String message = "Notice: Lab starts at 10 AM";
for (Socket client : clients) {
PrintWriter writer = new PrintWriter([Link](), true);
[Link](message);
[Link]();
}
[Link]("Message sent to all clients.");
[Link]();
} catch (IOException e) {
[Link]();
}
}
}
Client ([Link])
import [Link].*;
import [Link].*;
public class MultiClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 5007);
BufferedReader reader = new BufferedReader(
new InputStreamReader([Link]()));
String message = [Link]();
[Link]("Message from server: " + message);
[Link]();
} catch (IOException e) {
[Link]();
}
}
}
20
8. TCP Server Connected to Many Clients - Output
Server Terminal:
Server waiting for 3 clients...
Client connected: 54350
Client connected: 54351
Client connected: 54352
Message sent to all clients.
Client 1 Terminal:
Message from server: Notice: Lab starts at 10 AM
Client 2 Terminal:
Message from server: Notice: Lab starts at 10 AM
Client 3 Terminal:
Message from server: Notice: Lab starts at 10 AM
21