import java.io.*;
import java.net.*;
public class clientch {
static int find_checksum(String msg) {
int sum = 0;
for (int i = 0; i < msg.length(); i++) {
sum += msg.charAt(i);
}
return sum % 256;
}
public static void main(String args[]) throws Exception {
Socket s = new Socket("localhost", 5000);
System.out.println("**** Connected to Server *****");
BufferedReader in = new BufferedReader(
new InputStreamReader(s.getInputStream())
);
PrintWriter out = new PrintWriter(
s.getOutputStream(), true
);
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in)
);
while (true) {
System.out.print("Enter message: [type exit to stop] ");
String msg = br.readLine();
if (msg.equalsIgnoreCase("exit")) {
out.println("exit");
break;
}
int checksum = find_checksum(msg);
System.out.println("Checksum: " + checksum);
System.out.println("\n1. Normal");
System.out.println("2. Message with error");
System.out.println("3. Checksum error");
System.out.println("4. Both error");
System.out.print("Choose case: ");
int choice = Integer.parseInt(br.readLine());
switch (choice) {
case 1:
break;
case 2:
msg = msg + "X";
break;
case 3:
checksum = checksum + 10;
break;
case 4:
msg = msg + "X";
checksum = checksum + 10;
break;
default:
System.out.println("Invalid choice");
continue;
}
out.println(msg);
out.println(checksum);
String response = in.readLine();
System.out.println("Server: " + response);
}
br.close();
in.close();
out.close();
s.close();
}
}
import java.io.*;
import java.net.*;
public class serverch {
static int find_checksum(String msg) {
int sum = 0;
for (int i = 0; i < msg.length(); i++) {
sum += msg.charAt(i);
}
return sum % 256;
}
public static void main(String args[]) throws Exception {
ServerSocket ss = new ServerSocket(5000);
System.out.println("**** Server Started *****");
System.out.println("**** Waiting for client *****");
Socket s = ss.accept();
System.out.println("**** Client Connected *****");
BufferedReader in = new BufferedReader(
new InputStreamReader(s.getInputStream())
);
PrintWriter out = new PrintWriter(
s.getOutputStream(), true
);
while (true) {
String msg = in.readLine();
if (msg == null || msg.equalsIgnoreCase("exit")) {
System.out.println("Exit & Client Disconnected");
break;
}
int rec_Checksum = Integer.parseInt(in.readLine());
int calc_Checksum = find_checksum(msg);
System.out.println("Received Message: " + msg);
System.out.println("Received Checksum: " + rec_Checksum);
System.out.println("Calculated Checksum: " + calc_Checksum);
if (rec_Checksum == calc_Checksum) {
System.out.println("status : no error ,Transmission success,Sending ACK");
out.println("ACK");
} else {
System.out.println("status : error ,Sending NACK");
out.println("NACK");
}
System.out.println("-------------------------------------------------------------------------------------------");
}
s.close();
ss.close();
}
}