-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOSI.java
More file actions
89 lines (80 loc) · 3 KB
/
Copy pathOSI.java
File metadata and controls
89 lines (80 loc) · 3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
// Raggav - 20BCT0127
/*
Algorithm:
1) Input the data that is to be transmitted.
2) Add all the headers to the data corresponding to each layer of the OSI protocol.
3) Convert the data to binary.
4) Send the data to the receiever to decrypt.
5) Remove the headers corresponding to each layer of the OSI protocol one by one.
6) End.
*/
import java.util.*;
public class OSI {
static String reduce(String data) { // utility function to reduce the string
return data.substring(2);
}
static String stringToBin(String input) { // function to convert string to binary
StringBuilder result = new StringBuilder();
char[] chars = input.toCharArray();
for (char aChar : chars) {
result.append(
String.format("%8s", Integer.toBinaryString(aChar)).replaceAll(" ", " "));
}
return result.toString();
}
// public static String bintoString(String input) {
// int i = 0;
// String output = "";
// for(i = 0; i < input.length(); i++) {
// i = input.indexOf(" ");
// String letter = input.substring(0, i);
// int let = Integer.parseInt(letter, 2);
// output += (char)let;
// input = input.substring(i+1);
// }
// output += (char)(Integer.parseInt(input.trim(), 2));
// return output;
// }
static String transmitter(String data) { // function for transmitter
System.out.println("\n--Transmitter:--");
data = "AI" + data;
System.out.println("Application Layer: " + data);
data = "PI" + data;
System.out.println("Presentation Layer: " + data);
data = "SI" + data;
System.out.println("Session Layer: " + data);
data = "TI" + data;
System.out.println("Transport Layer: " + data);
data = "NI" + data;
System.out.println("Network Layer: " + data);
data = "DI" + data + "DI";
System.out.println("Data link Layer: " + data);
System.out.println("Binary data: " + stringToBin(data));
return data;
}
static String receiver(String data) { // function for receiver
System.out.println("\n--Receiver:--");
System.out.println("Data link Layer: " + data);
data = reduce(data);
data = data.substring(0, data.length() - 2);
System.out.println("Network Layer: " + data);
data = reduce(data);
System.out.println("Transport Layer: " + data);
data = reduce(data);
System.out.println("Session Layer: " + data);
data = reduce(data);
System.out.println("Presentation Layer: " + data);
data = reduce(data);
System.out.println("Application Layer: " + data);
data = reduce(data);
return data;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter data to transmit");
String data = sc.next();
data = transmitter(data);
System.out.println("\nFinal data at Receiver end: " + receiver(data));
sc.close();
}
}