TCP Echo Client
import java.io.*;
import java.net.*;
class TCPEchoClient {
static int port = 5555;
static String add = "localhost";
public static void main(String[] args) {
try {
Socket cs = new Socket(add, port);
System.out.println("Connected to server");
InputStreamReader in1 = new InputStreamReader(System.in);
BufferedReader uir = new BufferedReader(in1);
InputStreamReader in2 = new InputStreamReader(cs.getInputStream());
BufferedReader sr = new BufferedReader(in2);
PrintWriter sw = new PrintWriter(cs.getOutputStream(), true);
String ui;
while ((ui = uir.readLine()) != null) {
sw.println(ui);
String ServerResponse = sr.readLine();
System.out.println("Server response = " + ServerResponse);
}
} catch (Exception e) {
System.out.println(e);
}
}
}
TCP Echo Server
import java.io.*;
import java.net.*;
class TCPEchoServer {
static int port = 5555;
public static void main(String[] args) {
try (ServerSocket ss = new ServerSocket(port)) {
System.out.println("TCP Echo server is listening");
Socket cs = ss.accept(); // Wait for a client connection
System.out.println("Client is connected");
// Setup input and output streams
InputStreamReader in = new InputStreamReader(cs.getInputStream());
BufferedReader cr = new BufferedReader(in);
PrintWriter cw = new PrintWriter(cs.getOutputStream(), true);
String cm; // Client message
while ((cm = cr.readLine()) != null) {
System.out.println("Retrieved from client: " + cm);
cw.println(cm); // Echo the message back to the client
System.out.println("Server echos: " + cm);
}
cs.close(); // Close the client socket
} catch (Exception e) {
System.out.println(e);
}
}
}
TCP Chat Server
import java.io.*;
import java.net.*;
class TCPChatServer {
static int PORT = 5555;
public static void main(String args[]) {
try (ServerSocket ss = new ServerSocket(PORT)) {
System.out.println("TCP chat server listening on port: " + PORT);
Socket cs = ss.accept();
System.out.println("Client connected: " + cs.getInetAddress());
BufferedReader cr = new BufferedReader(new InputStreamReader(cs.getInputStream()));
PrintWriter cw = new PrintWriter(cs.getOutputStream(), true);
BufferedReader sr = new BufferedReader(new InputStreamReader(System.in));
String cm, sm;
while (true) {
if ((cm = cr.readLine()) != null) {
System.out.println("Received from client: " + cm);
}
System.out.print("Enter message to client: ");
sm = sr.readLine();
cw.println("Server says: " + sm);
}
} catch (IOException e) {
System.out.println("Error: " + e);
}
}
}
TCP Chat Client
import java.io.*;
import java.net.*;
class TCPChatClient {
static String SERVER_ADDRESS = "localhost";
static int SERVER_PORT = 5555;
public static void main(String args[]) {
try (Socket cs = new Socket(SERVER_ADDRESS, SERVER_PORT)) {
System.out.println("Connected to Server");
BufferedReader userInputReader = new BufferedReader(new InputStreamReader(System.in));
BufferedReader serverReader = new BufferedReader(new InputStreamReader(cs.getInputStream()));
PrintWriter serverWriter = new PrintWriter(cs.getOutputStream(), true);
String userInput, serverResponse;
while (true) {
System.out.print("Enter message to server: ");
userInput = userInputReader.readLine();
serverWriter.println("Client says: " + userInput);
if ((serverResponse = serverReader.readLine()) != null) {
System.out.println("Server Response: " + serverResponse);
}
}
} catch (IOException e) {
System.out.println("Error = " + e);
}
}
}
TCP Server to collect date and time
import java.util.Date;
import java.util.Scanner;
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;
class TCPTime {
public static final int port = 9001;
public static final String address = "127.0.0.1";
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter 1 for Server mode and 2 for Client mode: ");
int mode = sc.nextInt();
sc.close();
if (mode == 1) {
TimeServer server = new TimeServer(port);
System.out.println("Time server is starting, waiting for connection...");
server.run();
} else if (mode == 2) {
TimeClient client = new TimeClient(address, port);
System.out.println("Time client is starting. Requesting time from server...");
client.run();
} else {
System.out.println("Invalid choice");
}
}
}
class TimeServer {
private final int port;
public TimeServer(int port) {
this.port = port;
}
public void run() {
try (ServerSocket serverSocket = new ServerSocket(port)) {
System.out.println("Time server is listening on port: " + port);
while (true) {
Socket clientSocket = serverSocket.accept();
System.out.println("Connected client: " + clientSocket.getInetAddress());
String currentTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
PrintWriter writer = new PrintWriter(clientSocket.getOutputStream(), true);
writer.println(currentTime);
clientSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class TimeClient {
private final int serverPort;
private final String serverAddress;
public TimeClient(String serverAddress, int serverPort) {
this.serverAddress = serverAddress;
this.serverPort = serverPort;
}
public void run() {
try (Socket socket = new Socket(serverAddress, serverPort)) {
System.out.println("Connected to server");
BufferedReader serverReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String serverTime = serverReader.readLine();
System.out.println("Server Time: " + serverTime);
} catch (IOException e) {
e.printStackTrace();
}
}
}
UDP Server to get date and time
UDP Server
import java.net.*;
import java.util.Date;
public class UDPServer {
public static void main(String[] args) {
try {
DatagramSocket ss = new DatagramSocket(1234);
System.out.println("Server is up and waiting for requests...");
byte[] rd = new byte[100];
byte[] sd;
while (true) {
// Receive packet
DatagramPacket rp = new DatagramPacket(rd, rd.length);
ss.receive(rp);
InetAddress ip = rp.getAddress();
int port = rp.getPort();
String clientMessage = new String(rp.getData(), 0, rp.getLength());
System.out.println("Received from client: " + clientMessage);
// Prepare response
String time = new Date().toString();
sd = time.getBytes();
// Send packet
DatagramPacket sp = new DatagramPacket(sd, sd.length, ip, port);
ss.send(sp);
System.out.println("Time sent to client.\n");
}
} catch (Exception e) {
System.out.println("Error: " + e);
}
}
}
UDP Client
import java.net.*;
public class UDPClient {
public static void main(String[] args) {
try {
System.out.println("Requesting server time...");
DatagramSocket cs = new DatagramSocket();
InetAddress ip = InetAddress.getByName("localhost");
String message = "Good morning";
byte[] sD = message.getBytes();
byte[] rD = new byte[1024];
// Send request packet
DatagramPacket sP = new DatagramPacket(sD, sD.length, ip, 1234);
cs.send(sP);
// Receive response packet
DatagramPacket rP = new DatagramPacket(rD, rD.length);
cs.receive(rP);
String time = new String(rP.getData(), 0, rP.getLength());
System.out.println("Server Time: " + time);
cs.close();
} catch (Exception e) {
System.out.println("Error: " + e);
}
}
}
UDP Echo Server
import java.net.*;
import java.io.*;
class UDPServer {
public static void main(String[] args) {
byte[] data = new byte[65507]; // Max UDP packet size
try {
DatagramSocket skt = new DatagramSocket(1000);
System.out.println("UDP Echo Server running on port 1000...");
while (true) {
DatagramPacket dp = new DatagramPacket(data, data.length);
skt.receive(dp); // Receive message
String s = new String(dp.getData(), 0, dp.getLength());
System.out.println("Received: " + s);
// Echo back the same message to client
InetAddress clientAddress = dp.getAddress();
int clientPort = dp.getPort();
DatagramPacket echo = new DatagramPacket(dp.getData(), dp.getLength(), clientAddress, clientPort);
skt.send(echo);
}
} catch (IOException e) {
System.out.println("Error: " + e);
}
}
}
UDP Echo Client
import java.util.*;
import java.io.*;
import java.net.*;
class UDPClient {
public static void main(String[] args) {
byte[] data;
DatagramPacket dp;
try {
InetAddress add = InetAddress.getLocalHost(); // or use InetAddress.getByName("localhost");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
DatagramSocket socket = new DatagramSocket();
System.out.println("Enter text to send to server (type '.' to quit):");
while (true) {
String line = br.readLine();
if (line.equals(".")) {
break;
}
data = line.getBytes();
dp = new DatagramPacket(data, data.length, add, 1000);
socket.send(dp);
}
socket.close();
} catch (IOException e) {
System.out.println("Error: " + e);
}
}
}