aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--q2/ford.c78
-rw-r--r--q3/checksum.c37
-rwxr-xr-xq3/checksum.obin0 -> 18600 bytes
-rw-r--r--q3/hamming.c56
-rwxr-xr-xq3/hamming.obin0 -> 18568 bytes
-rw-r--r--readme.txt26
6 files changed, 194 insertions, 3 deletions
diff --git a/q2/ford.c b/q2/ford.c
new file mode 100644
index 0000000..993a0c3
--- /dev/null
+++ b/q2/ford.c
@@ -0,0 +1,78 @@
1#include <stdio.h>
2
3int A[10][10], n, d[10], p[10];
4
5int bellman_ford() {
6 int i, u, v;
7 for (int i = 0; i < n; i++) {
8 for (u = 0; u < n; u++) {
9 for (v = 0; v < n; v++) {
10 if (d[v] > d[u] + A[u][v]) {
11 d[v] = d[u] + A[u][v];
12 p[v] = u;
13 }
14 }
15 }
16 }
17 for (u = 0; u < n; u++) {
18 for (v = 0; v < n; v++) {
19 if (d[v] > d[u] + A[u][v]) {
20 printf("Detected negative edge\n");
21 return -1;
22 }
23 }
24 }
25 return 0;
26}
27
28int main() {
29 scanf("%d", &n);
30 int source = 0, destination = 0;
31 for (int i = 0; i < n; i++) {
32 for (int j = 0; j < n; j++) {
33 scanf("%d", &A[i][j]);
34 }
35 }
36 scanf("%d", &source);
37 scanf("%d", &destination);
38
39 printf("Input graph:\n");
40 for (int i = 0; i < n; i++) {
41 for (int j = 0; j < n; j++) {
42 printf("%3d ", A[i][j]);
43 }
44 printf("\n");
45 }
46
47 for (int i = 0; i < n; i++) {
48 d[i] = 999;
49 p[i] = -1;
50 }
51 d[source] = 0;
52 int valid = bellman_ford();
53 if (valid == -1) {
54 printf("Graph contains negative edge\n");
55 return 0;
56 }
57 printf("\nFrom Router %d to Router %d\n", source, destination);
58 // for(int i=0; i<n; i++){
59 // printf("Cost: %2d | Path: ", d[i]);
60 // if(i != source){
61 // int j = i;
62 // while(p[j] != -1){
63 // printf("%d <- ",j);
64 // j = p[j];
65 // }
66 // }
67 // printf("%d\n",source);
68 // }
69 printf("Cost: %2d | Path: ", d[destination]);
70 if(destination != source){
71 int j = destination;
72 while(p[j] != -1){
73 printf("%d <- ",j);
74 j = p[j];
75 }
76 }
77 printf("%d\n",source);
78}
diff --git a/q3/checksum.c b/q3/checksum.c
new file mode 100644
index 0000000..513ae17
--- /dev/null
+++ b/q3/checksum.c
@@ -0,0 +1,37 @@
1#include <stdio.h>
2#include <stdio.h>
3
4int checksum() {
5 unsigned int parts[9];
6 unsigned int sum;
7 printf("Enter the parts, one per line:\n");
8 for (int i = 0; i < 9; i++) {
9 scanf("%X", &parts[i]);
10 sum += parts[i];
11 while (sum >> 16)
12 sum = (sum & 0xffff) + (sum >> 16);
13 }
14 return ~sum;
15}
16
17int main() {
18 printf("--- SENDER ---\n");
19 int sender_checksum = checksum();
20 printf("\n--- RECV ---\n");
21 int recv_checksum = checksum();
22 printf("Sent checksum: %x\n", sender_checksum);
23 printf("Recieved checksum: %x\n", recv_checksum);
24 if (sender_checksum == recv_checksum) {
25 printf("Matching checksums!\n");
26 return 0;
27 } else {
28 printf("Mismatched checksums!\n");
29 return 0;
30 }
31}
32
33// 00004500 00000073 00000000 00004000 00004011 0000c0a8 00000001 0000c0a8 000000c7
34// checksum - ffffb861
35
36// 00004500 0000003c 00001c46 00004000 00004006 0000ac10 00000a63 0000ac10 00000a0c
37// checksum - 0000b1e6
diff --git a/q3/checksum.o b/q3/checksum.o
new file mode 100755
index 0000000..cfcaed6
--- /dev/null
+++ b/q3/checksum.o
Binary files differ
diff --git a/q3/hamming.c b/q3/hamming.c
new file mode 100644
index 0000000..01d0f0e
--- /dev/null
+++ b/q3/hamming.c
@@ -0,0 +1,56 @@
1#include<stdio.h>
2
3void main() {
4 int data[10];
5 int dataatrec[10],c,c1,c2,c3,i;
6
7 printf("Sender: ");
8 scanf("%d %d %d %d",&data[0] ,&data[1] ,&data[2] ,&data[4]);
9
10 //Calculation of even parity
11 data[6]=data[0]^data[2]^data[4];
12 data[5]=data[0]^data[1]^data[4];
13 data[3]=data[0]^data[1]^data[2];
14
15 printf("Encoded Data: ");
16 for(i=0;i<7;i++)
17 printf("%d",data[i]);
18
19 printf("\nReceiver: ");
20 for(i=0;i<7;i++)
21 scanf("%d",&dataatrec[i]);
22
23 c1=dataatrec[6]^dataatrec[4]^dataatrec[2]^dataatrec[0];
24 c2=dataatrec[5]^dataatrec[4]^dataatrec[1]^dataatrec[0];
25 c3=dataatrec[3]^dataatrec[2]^dataatrec[1]^dataatrec[0];
26 c=c3*4+c2*2+c1 ;
27
28 printf("\nSyndrome bits: %d %d %d", c1, c2, c3);
29
30 if(c==0) {
31 printf("\nNo error while transmission of data\n");
32 }
33 else {
34 printf("\nError Position: %d",c);
35
36 printf("\nData sent: ");
37 for(i=0;i<7;i++)
38 printf("%d",data[i]);
39
40 printf("\nData received: ");
41 for(i=0;i<7;i++)
42 printf("%d",dataatrec[i]);
43
44 printf("\nCorrect message is: ");
45
46 //if errorneous bit is 0 we complement it else vice versa
47 if(dataatrec[7-c]==0)
48 dataatrec[7-c]=1;
49 else
50 dataatrec[7-c]=0;
51
52 for (i=0;i<7;i++) {
53 printf("%d",dataatrec[i]);
54 }
55 }
56}
diff --git a/q3/hamming.o b/q3/hamming.o
new file mode 100755
index 0000000..fa9cb70
--- /dev/null
+++ b/q3/hamming.o
Binary files differ
diff --git a/readme.txt b/readme.txt
index 6aabaaf..5caeacf 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,5 +1,7 @@
118CS54 - network programming and security 118CS54 - network programming and security
2------------------------------------------------------------ 2============================================================
3
4
3Q1: Write a networking program consisting of a client and 5Q1: Write a networking program consisting of a client and
4 server components. The client must request for a file by 6 server components. The client must request for a file by
5 providing a file name, and the server must respond with the 7 providing a file name, and the server must respond with the
@@ -9,8 +11,26 @@ Q1: Write a networking program consisting of a client and
9 11
10A1: https://u.peppe.rs/qt.png 12A1: https://u.peppe.rs/qt.png
11 13
14------------------------------------------------------------
15
16Q2: Write a program to illustrate the function of
17 Distance-Vector routing using Bellman-Ford algorithm. Handle
18 the situation where negative edges are present.
19
20A2: https://u.peppe.rs/LS.png
21 https://u.peppe.rs/ep.png
22
23------------------------------------------------------------
24
25Q3: Write a program to showcase
26 a) Checksum - error detection
27 b) Hamming code - error detection and correction
28
29A3: https://u.peppe.rs/qQ.png
30 https://u.peppe.rs/qr.png
12 31
13------------------------------------------------------------ 32------------------------------------------------------------
33
14Q6: Write a networking program to demonstrate the following: 34Q6: Write a networking program to demonstrate the following:
15 a) Concurrent TCP server 35 a) Concurrent TCP server
16 b) Iterative TCP server 36 b) Iterative TCP server
@@ -20,8 +40,8 @@ A6: a) https://u.peppe.rs/E3.png
20 b) https://u.peppe.rs/VA.png 40 b) https://u.peppe.rs/VA.png
21 c) https://u.peppe.rs/ei.png 41 c) https://u.peppe.rs/ei.png
22 42
23
24------------------------------------------------------------ 43------------------------------------------------------------
44
25Q7: Write a networking program that recieves a shell command 45Q7: Write a networking program that recieves a shell command
26 from a client and returns the output of the command to the 46 from a client and returns the output of the command to the
27 client. 47 client.
@@ -29,5 +49,5 @@ Q7: Write a networking program that recieves a shell command
29A7: https://u.peppe.rs/QD.png 49A7: https://u.peppe.rs/QD.png
30 50
31 51
32------------------------------------------------------------ 52============================================================
33mirror of git.peppe.rs/university/nps 53mirror of git.peppe.rs/university/nps