Guest User

Networks CAT 2

a guest
Oct 16th, 2016
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.85 KB | None | 0 0
  1. AIM – To implement sliding window protocol in noisy channels
  2. CODE –
  3. #include<stdio.h>
  4. #include<string.h>
  5. #include<stdlib.h>
  6. struct Packet{
  7. int data;
  8. int seq;
  9. int rand;
  10. };
  11. main(){
  12. int win,seqmax,data;
  13. printf("Enter the max sequence number starting from zero : ");
  14. scanf("%d",&seqmax);
  15. win = seqmax-1;
  16. printf("Enter the number of packets to be sent : ");
  17. scanf("%d",&data);
  18. Packet sd[data];
  19. Packet rv[win];
  20. for(int i = 0 ; i < data ; i++){
  21. sd[i].data = i;
  22. sd[i].seq = i%seqmax;
  23. }
  24. int i,j;
  25. int sf,sn,rn;
  26. sf = rn = 0;
  27. while(rn < data-win){
  28. //Sender side
  29. printf("Packets sent (seqnum) : ");
  30. sn = sf;
  31. for(i = sf ; i < win+sf ; i++){
  32. printf("%d, ",sd[i].seq);
  33. }
  34. sn += win;
  35. printf("\n");
  36. //Network noise generation (randomize packets n lose them)
  37. for(i = sf ; i < win+sf ; i++){
  38. int r = (rand()%win) + sf;
  39. rv[i-sf] = sd[r];
  40. rv[i-sf].rand = rand()%10;
  41. }
  42. //Reciever Side
  43. printf("Packets Recieved : \n");
  44. for(i = 0 ; i < win ; i++){
  45. printf("\t");
  46. if(rv[i].rand > 3){
  47. printf("%d : ",rv[i].seq);
  48. if(rv[i].seq == sd[rn].seq){
  49. rn++;
  50. printf("Accepted \n");
  51. }
  52. else{
  53. printf("Rejected \n");
  54. }
  55. }
  56. }
  57. printf("ACK sent with %d \n",sd[rn].seq);
  58. //Network Noise
  59. int k = rand()%10;
  60. //Sender side
  61. if(k > 3){
  62. printf("ACK recieved for packet %d \n",sd[rn].seq);
  63. sf = rn;
  64. }
  65. else{
  66. printf("ACK lost... Timeout \n");
  67. }
  68. }
  69. }
  70. OUTPUT –
  71. EXP - 2
  72. AIM – To implement a TCP/IP based chat application
  73. SERVER CODE –
  74. //server
  75. #include<sys/types.h>
  76. #include<sys/socket.h>
  77. #include<netinet/in.h>
  78. #include<arpa/inet.h>
  79. #include<stdio.h>
  80. #include<stdlib.h>
  81. #include<unistd.h>
  82. #include<errno.h>
  83. #include<string.h>
  84. int main(int argc, char *argv[]){
  85. int sockfd,newsockfd,clilen;
  86. int port,n;
  87. char buffer[256];
  88. struct sockaddr_in serv_addr,cli_addr;
  89. if(argc < 2){
  90. printf("No port provided!");
  91. exit(1);
  92. }
  93. sockfd = socket(AF_INET,SOCK_STREAM,0);
  94. if(sockfd < 0){
  95. perror("Error during socet creation!");
  96. exit(2);
  97. }
  98. bzero((char*) &serv_addr, sizeof(serv_addr));
  99. port = atoi(argv[1]);
  100. serv_addr.sin_family = AF_INET;
  101. serv_addr.sin_addr.s_addr = INADDR_ANY;
  102. serv_addr.sin_port = htons(port);
  103. if(bind(sockfd,(struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0){
  104. perror("Error during binding!");
  105. exit(3);
  106. }
  107. listen(sockfd,5);
  108. clilen = sizeof(cli_addr);
  109. newsockfd = accept(sockfd,(struct sockaddr *) &cli_addr, &clilen);
  110. if(newsockfd < 0){
  111. perror("Error on accept!");
  112. exit(4);
  113. }
  114. do{
  115. bzero(buffer,256);
  116. n = read(newsockfd,buffer,255);
  117. if(n < 0){
  118. perror("Error reading!");
  119. exit(5);
  120. }
  121. printf("Message is %s \n", buffer);
  122. bzero(buffer,256);
  123. fgets(buffer,255,stdin);
  124. n = write(newsockfd,buffer,255);
  125. if(n < 0){
  126. perror("Error in writing");
  127. exit(6);
  128. }
  129. }while(1);
  130. return 0;
  131. }
  132. CLIENT CODE –
  133. //client
  134. #include<sys/types.h>
  135. #include<sys/socket.h>
  136. #include<netinet/in.h>
  137. #include<arpa/inet.h>
  138. #include<stdio.h>
  139. #include<stdlib.h>
  140. #include<unistd.h>
  141. #include<errno.h>
  142. #include<string.h>
  143. #include<netdb.h>
  144. int main(int argc, char *argv[]){
  145. int sockfd,port,n;
  146. struct sockaddr_in serv_addr;
  147. struct hostent *server;
  148. char buffer[256];
  149. if(argc < 3){
  150. printf("usage %s hostname port\n",argv[0]);
  151. exit(1);
  152. }
  153. port = atoi(argv[2]);
  154. sockfd = socket(AF_INET, SOCK_STREAM, 0);
  155. if(sockfd < 0){
  156. perror("Error during socket creation!");
  157. exit(2);
  158. }
  159. server = gethostbyname(argv[1]);
  160. if(server == NULL){
  161. printf("No such host! \n");
  162. exit(3);
  163. }
  164. bzero((char*) &serv_addr,sizeof(serv_addr));
  165. serv_addr.sin_family = AF_INET;
  166. bcopy((char*) server->h_addr,(char*)&serv_addr.sin_addr.s_addr,server->h_length);
  167. serv_addr.sin_port = htons(port);
  168. if(connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0){
  169. perror("Error connecting!");
  170. exit(4);
  171. }
  172. do{
  173. printf("Enter message : ");
  174. bzero(buffer,256);
  175. fgets(buffer,255,stdin);
  176. n = write(sockfd,buffer,strlen(buffer));
  177. if(n < 0){
  178. perror("Error in Writing");
  179. exit(5);
  180. }
  181. bzero(buffer,256);
  182. n = read(sockfd,buffer,255);
  183. if(n < 0){
  184. perror("Error Reading");
  185. exit(6);
  186. }
  187. printf("%s \n",buffer);
  188. }while(1);
  189. return 0;
  190. }
  191. OUTPUT –
  192. EXP-3
  193. AIM – To transfer a file using TCP/IP
  194. SERVER CODE –
  195. //server
  196. #include<sys/types.h>
  197. #include<sys/socket.h>
  198. #include<netinet/in.h>
  199. #include<arpa/inet.h>
  200. #include<stdio.h>
  201. #include<stdlib.h>
  202. #include<unistd.h>
  203. #include<errno.h>
  204. #include<string.h>
  205. int main(int argc, char *argv[]){
  206. int sockfd,newsockfd,clilen;
  207. int port,n;
  208. char buffer[1024];
  209. struct sockaddr_in serv_addr,cli_addr;
  210. if(argc < 2){
  211. printf("No port provided!");
  212. exit(1);
  213. }
  214. sockfd = socket(AF_INET,SOCK_STREAM,0);
  215. if(sockfd < 0){
  216. perror("Error during socet creation!");
  217. exit(2);
  218. }
  219. bzero((char*) &serv_addr, sizeof(serv_addr));
  220. port = atoi(argv[1]);
  221. serv_addr.sin_family = AF_INET;
  222. serv_addr.sin_addr.s_addr = INADDR_ANY;
  223. serv_addr.sin_port = htons(port);
  224. if(bind(sockfd,(struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0){
  225. perror("Error during binding!");
  226. exit(3);
  227. }
  228. listen(sockfd,5);
  229. clilen = sizeof(cli_addr);
  230. newsockfd = accept(sockfd,(struct sockaddr *) &cli_addr, &clilen);
  231. if(newsockfd < 0){
  232. perror("Error on accept!");
  233. exit(4);
  234. }
  235. //Full setup done.... server listening
  236. FILE *fptr;
  237. bzero(buffer,1024);
  238. fptr = fopen("filemsg.txt","r");
  239. if(fptr == NULL){
  240. printf("File open error!");
  241. exit(5);
  242. }
  243. fscanf(fptr,"%[^\n]",&buffer);
  244. printf("%s \n",buffer);
  245. n = write(newsockfd,buffer,1023);
  246. if(n < 0){
  247. perror("Error in writing");
  248. exit(6);
  249. }
  250. printf("String sent : %s \n",buffer);
  251. printf("File sent!! \n");
  252. fclose(fptr);
  253. close(newsockfd);
  254. //Process ends
  255. return 0;
  256. }
  257. CLIENT CODE –
  258. // client
  259. #include<sys/types.h>
  260. #include<sys/socket.h>
  261. #include<netinet/in.h>
  262. #include<arpa/inet.h>
  263. #include<stdio.h>
  264. #include<stdlib.h>
  265. #include<unistd.h>
  266. #include<errno.h>
  267. #include<string.h>
  268. #include<netdb.h>
  269. int main(int argc, char *argv[]){
  270. int sockfd,port,n;
  271. struct sockaddr_in serv_addr;
  272. struct hostent *server;
  273. char buffer[1024];
  274. if(argc < 3){
  275. printf("usage %s hostname port\n",argv[0]);
  276. exit(1);
  277. }
  278. port = atoi(argv[2]);
  279. sockfd = socket(AF_INET, SOCK_STREAM, 0);
  280. if(sockfd < 0){
  281. perror("Error during socket creation!");
  282. exit(2);
  283. }
  284. server = gethostbyname(argv[1]);
  285. if(server == NULL){
  286. printf("No such host! \n");
  287. exit(3);
  288. }
  289. bzero((char*) &serv_addr,sizeof(serv_addr));
  290. serv_addr.sin_family = AF_INET;
  291. bcopy((char*) server->h_addr,(char*)&serv_addr.sin_addr.s_addr,server->h_length);
  292. serv_addr.sin_port = htons(port);
  293. if(connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0){
  294. perror("Error connecting!");
  295. exit(4);
  296. }
  297. //Full connection done
  298. FILE *fptr;
  299. fptr = fopen("file1.txt","a");
  300. if(fptr == NULL){
  301. printf("File error");
  302. exit(5);
  303. }
  304. bzero(buffer,1024);
  305. n = read(sockfd,buffer,1023);
  306. if(n < 0){
  307. perror("Error reading");
  308. exit(5);
  309. }
  310. fprintf(fptr,"%s",buffer);
  311. printf("File recieved!!\n");
  312. fclose(fptr);
  313. //Process end
  314. return 0;
  315. }
  316. OUTPUT –
  317. EXP - 4
  318. AIM – To implement a client server authentication using TCP/IP
  319. SERVER CODE –
  320. //server
  321. #include<sys/types.h>
  322. #include<sys/socket.h>
  323. #include<netinet/in.h>
  324. #include<arpa/inet.h>
  325. #include<stdio.h>
  326. #include<stdlib.h>
  327. #include<unistd.h>
  328. #include<errno.h>
  329. #include<string.h>
  330. int main(int argc, char *argv[]){
  331. int sockfd,newsockfd,clilen;
  332. int port,n;
  333. char actuser[256];
  334. char actpass[256];
  335. char user[256];
  336. char pass[256];
  337. struct sockaddr_in serv_addr,cli_addr;
  338. if(argc < 2){
  339. printf("No port provided!");
  340. exit(1);
  341. }
  342. sockfd = socket(AF_INET,SOCK_STREAM,0);
  343. if(sockfd < 0){
  344. perror("Error during socket creation!");
  345. exit(2);
  346. }
  347. bzero((char*) &serv_addr, sizeof(serv_addr));
  348. port = atoi(argv[1]);
  349. serv_addr.sin_family = AF_INET;
  350. serv_addr.sin_addr.s_addr = INADDR_ANY;
  351. serv_addr.sin_port = htons(port);
  352. if(bind(sockfd,(struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0){
  353. perror("Error during binding!");
  354. exit(3);
  355. }
  356. listen(sockfd,5);
  357. clilen = sizeof(cli_addr);
  358. newsockfd = accept(sockfd,(struct sockaddr *) &cli_addr, &clilen);
  359. if(newsockfd < 0){
  360. perror("Error on accept!");
  361. exit(4);
  362. }
  363. printf("Enter actual username : ");
  364. scanf("%s",&actuser);
  365. printf("Enter actual password : ");
  366. scanf("%s",&actpass);
  367. n = write(newsockfd,"Enter username : ",17);
  368. n = read(newsockfd,user,255);
  369. user[strlen(user)] = '\0';
  370. if(strcmp(user,actuser) == 10){
  371. n = write(newsockfd,"Enter password : ",17);
  372. n = read(newsockfd,pass,255);
  373. pass[strlen(pass)] = '\0';
  374. if(strcmp(pass,actpass) == 10){
  375. n = write(newsockfd,"Accepted!",9);
  376. printf("ACCEPT \n");
  377. }
  378. else{
  379. n = write(newsockfd,"Rejected!",9);
  380. printf("REJECT \n");
  381. close(newsockfd);
  382. }
  383. }
  384. else{
  385. n = write(newsockfd,"Rejected!",9);
  386. printf("REJECT\n");
  387. close(newsockfd);
  388. }
  389. return 0;
  390. }
  391. CLIENT CODE –
  392. //client
  393. #include<stdio.h>
  394. #include<stdlib.h>
  395. #include<sys/types.h>
  396. #include<sys/socket.h>
  397. #include<netinet/in.h>
  398. #include<netdb.h>
  399. int main(int argc, char *argv[]){
  400. int sockfd,port,n;
  401. struct sockaddr_in serv_addr;
  402. struct hostent *server;
  403. char buffer[256];
  404. char user[256];
  405. char pass[256];
  406. if(argc < 3){
  407. printf("usage %s hostname port\n",argv[0]);
  408. exit(1);
  409. }
  410. port = atoi(argv[2]);
  411. sockfd = socket(AF_INET, SOCK_STREAM, 0);
  412. if(sockfd < 0){
  413. perror("Error during socket creation!");
  414. exit(2);
  415. }
  416. server = gethostbyname(argv[1]);
  417. if(server == NULL){
  418. printf("No such host! \n");
  419. exit(3);
  420. }
  421. bzero((char*) &serv_addr,sizeof(serv_addr));
  422. serv_addr.sin_family = AF_INET;
  423. bcopy((char*) server->h_addr,(char*)&serv_addr.sin_addr.s_addr,server->h_length);
  424. serv_addr.sin_port = htons(port);
  425. if(connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0){
  426. perror("Error connecting!");
  427. exit(4);
  428. }
  429. bzero(buffer,256);
  430. n = read(sockfd,buffer,255);
  431. printf("%s",buffer);
  432. bzero(user,256);
  433. fgets(user,255,stdin);
  434. n = write(sockfd,user,strlen(user));
  435. bzero(buffer,256);
  436. n = read(sockfd,buffer,255);
  437. printf("%s",buffer);
  438. bzero(pass,256);
  439. fgets(pass,255,stdin);
  440. n = write(sockfd,pass,strlen(pass));
  441. bzero(buffer,256);
  442. n = read(sockfd,buffer,255);
  443. printf("%s\n",buffer);
  444. return 0;
  445. }
  446.  
  447.  
  448. CYCLE SHEET 1
  449. HAMMING
  450. #include<stdio.h>
  451. int main() {
  452. int data[7],rec[7],i,c1,c2,c3,c;
  453. printf("this works for message of 4bits in size \nenter message bit one by one: ");
  454. scanf("%d%d%d%d",&data[0],&data[1],&data[2],&data[4]);
  455. data[6]=data[0]^data[2]^data[4];
  456. data[5]=data[0]^data[1]^data[4];
  457. data[3]=data[0]^data[1]^data[2];
  458. printf("\nthe encoded bits are given below: \n");
  459. for (i=0;i<7;i++) {
  460. printf("%d ",data[i]);
  461. }
  462. printf("\nenter the received data bits one by one: ");
  463. for (i=0;i<7;i++) {
  464. scanf("%d",&rec[i]);
  465. }
  466. c1=rec[6]^rec[4]^rec[2]^rec[0];
  467. c2=rec[5]^rec[4]^rec[1]^rec[0];
  468. c3=rec[3]^rec[2]^rec[1]^rec[0];
  469. c=c3*4+c2*2+c1 ;
  470. if(c==0) {
  471. printf("\ncongratulations there is no error: ");
  472. } else {
  473. printf("\nerron on the postion: %d\nthe correct message is \n",c);
  474. if(rec[7-c]==0)
  475. rec[7-c]=1; else
  476. rec[7-c]=0;
  477. for (i=0;i<7;i++) {
  478. printf("%d ",rec[i]);
  479. }
  480. }
  481. return 0;
  482. }
  483.  
  484. OSI
  485. #include<stdio.h>
  486. #include<string.h>
  487. int main()
  488. {
  489. char temp[20],str[20];
  490. printf("Enter the string");
  491. scanf("%s",&str);
  492. printf("transmitter");
  493. strcpy(temp,str);
  494. printf("Application layer: ");
  495. strcpy(temp,"AL");
  496. strcat(temp,str);
  497. printf("%s",temp);
  498. printf("Presentation Layer");
  499. strcpy(temp,"PL");
  500. strcat(temp,str);
  501. printf("%s\nSession Layer",temp);
  502. strcpy(temp,"SL");
  503. strcat(temp,str);
  504. printf("%s\ntransport layer",temp);
  505. strcpy(temp,"TL");
  506. strcat(temp,str);
  507. printf("%s\nNetwork layer",temp);
  508. strcpy(temp,"NL");
  509. strcat(temp,str);
  510. printf("%s\nData Link Layer",temp);
  511. strcpy(temp,"DLL");
  512. strcat(temp,str);
  513. printf("%s\nReceiver",temp);
  514. int i;
  515. printf("\nData Link Layer: ");
  516. for(i=0;i<strlen(str);i++)
  517. {printf("%c",str[i]);
  518. }
  519. printf("\nNetwork layer: ");
  520. for(i=4;i<strlen(str);i++)
  521. printf("%c",str[i]);
  522. printf("\nTransport layer: ");
  523. for(i=6;i<strlen(str);i++)
  524. {
  525.  
  526. printf("%c",str[i]);}
  527. printf("\nSession layer: ");
  528. for(i=8;i<strlen(str);i++)
  529. {
  530.  
  531. printf("%c",str[i]);}
  532. printf("\nPresentation layer: ");
  533. for(i=10;i<strlen(str);i++)
  534. {
  535.  
  536. printf("%c",str[i]);}
  537. printf("\nApplication layer: ");
  538. for(i=12;i<strlen(str);i++)
  539. {printf("%c",str[i]);
  540. }
  541. }
  542.  
  543. BIT STUFFING
  544. #include<conio.h>
  545. #include<stdio.h>
  546. #include<string.h>
  547. void main() {
  548. int i, j,count=0,nl;
  549. char str[100];
  550. printf("enter the bit string: ");
  551. gets(str);
  552. for (i=0;i<strlen(str);i++) {
  553. count=0;
  554. for (j=i;j<=(i+5);j++) {
  555. if(str[j]=='1') {
  556. count++;
  557. }
  558. }
  559. if(count==6) {
  560. nl=strlen(str)+2;
  561. for (;nl>=(i+5);nl--) {
  562. str[nl]=str[nl-1];
  563. }
  564. str[i+5]='0';
  565. i=i+7;
  566. }
  567. }
  568. puts(str);
  569. getch();
  570. }
  571.  
  572. Character Count
  573. #include<stdio.h>
  574. #include<string.h>
  575. int main()
  576. {
  577. int t[50],i,n;
  578. char s[50][50];
  579. scanf("%d",&n);
  580. for(i=0;i<n;i++)
  581. {
  582. scanf("%s",s[i]);
  583. }
  584. for(i=0;i<n;i++)
  585. t[i]=strlen(s[i]);
  586. printf("The transmitted data is \n");
  587. for(i=0;i<n;i++)
  588. {
  589. printf("%d",t[i]+1);
  590. printf("%s",s[i]);
  591. }
  592. }
  593.  
  594. CHECKSUM
  595. #include<stdio.h>
  596. #include<math.h>
  597.  
  598. int sender(int b[10],int k)
  599. {
  600. int checksum,sum=0,i;
  601. printf("\n****SENDER****\n");
  602.  
  603. for(i=0;i<k;i++)
  604. sum+=b[i];
  605. printf("SUM IS: %d",sum);
  606.  
  607. checksum=~sum;
  608. printf("\nSENDER's CHECKSUM IS:%d",checksum);
  609. return checksum;
  610. }
  611.  
  612. int receiver(int c[10],int k,int scheck)
  613. {
  614. int checksum,sum=0,i;
  615. printf("\n\n****RECEIVER****\n");
  616. for(i=0;i<k;i++)
  617. sum+=c[i];
  618. printf(" RECEIVER SUM IS:%d",sum);
  619. sum=sum+scheck;
  620. checksum=~sum;
  621. printf("\nRECEIVER's CHECKSUM IS:%d",checksum);
  622. return checksum;
  623. }
  624. main()
  625. {
  626. int a[10],i,m,scheck,rcheck;
  627. printf("\nENTER SIZE OF THE STRING:");
  628. scanf("%d",&m);
  629. printf("\nENTER THE ELEMENTS OF THE ARRAY:");
  630. for(i=0;i<m;i++)
  631. scanf("%d",&a[i]);
  632. scheck=sender(a,m);
  633. rcheck=receiver(a,m,scheck);
  634. if(rcheck==0)
  635. printf("\n\nNO ERROR IN TRANSMISSION\n\n");
  636. else
  637. printf("\n\nERROR DETECTED");
  638.  
  639. }
  640.  
  641. CRC
  642. #include <conio.h>
  643. #include <string.h>
  644. #include<stdio.h>
  645. void main()
  646. {
  647. int i,j,keylen,msglen;
  648. char input[100], key[30],temp[30],quot[100],rem[30],key1[30];
  649. printf("Enter Data: ");
  650. gets(input);
  651. printf("Enter Key: ");
  652. gets(key);
  653. keylen=strlen(key);
  654. msglen=strlen(input);
  655. strcpy(key1,key);
  656. for(i=0;i<keylen-1;i++)
  657. {
  658. input[msglen+i]='0';
  659. }
  660. for(i=0;i<keylen;i++)
  661. temp[i]=input[i];
  662. for(i=0;i<msglen;i++)
  663. {
  664. quot[i]=temp[0];
  665. if(quot[i]=='0')
  666. for(j=0;j<keylen;j++)
  667. key[j]='0';
  668. else
  669. for(j=0;j<keylen;j++)
  670. key[j]=key1[j];
  671. for(j=keylen-1;j>0;j--)
  672. {
  673. if(temp[j]==key[j])
  674. rem[j-1]='0';
  675. else
  676. rem[j-1]='1';
  677. }
  678. rem[keylen-1]=input[i+keylen];
  679. strcpy(temp,rem);
  680. }
  681. strcpy(rem,temp);
  682. printf("\nQuotient is ");
  683. for(i=0;i<msglen;i++)
  684. printf("%c",quot[i]);
  685. printf("\nRemainder is ");
  686. for(i=0;i<keylen-1;i++)
  687. printf("%c",rem[i]);
  688. printf("\nFinal data is: ");
  689. for(i=0;i<msglen;i++)
  690. printf("%c",input[i]);
  691. for(i=0;i<keylen-1;i++)
  692. printf("%c",rem[i]);
  693. getch();
  694. }
Add Comment
Please, Sign In to add comment