Guest User

Sockets

a guest
Nov 3rd, 2016
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.92 KB | None | 0 0
  1. Activity 7:
  2. Q7: Chat App using TCP/IP protocol.
  3.  
  4. Server Side:
  5.  
  6. #include<stdio.h>
  7. #include<stdlib.h>
  8. #include<string.h>
  9. #include<sys/socket.h>
  10. #include<netdb.h>
  11. #include<arpa/inet.h>
  12.  
  13. void error(char *msg)
  14. {
  15. perror(msg);
  16. exit(1);
  17. }
  18.  
  19. int main(int argc,char* argv[])
  20. {
  21. int sockfd,newsockfd,portno;
  22. char recvbuffer[256],sendbuffer[256];
  23. struct sockaddr_in ser_addr,cli_addr;
  24. int i;
  25.  
  26. if(argc<2)
  27. error("./server portno");
  28.  
  29. portno=atoi(argv[1]);
  30.  
  31. bzero((char*)&ser_addr,sizeof(ser_addr));
  32. ser_addr.sin_family=AF_INET;
  33. ser_addr.sin_addr.s_addr=INADDR_ANY;
  34. ser_addr.sin_port=htons(portno);
  35.  
  36. sockfd=socket(AF_INET,SOCK_STREAM,0);
  37. if(sockfd==-1)
  38. error("error in socket descriptor");
  39. printf("\nsocket created\n");
  40.  
  41. if(bind(sockfd,(struct sockaddr*)&ser_addr,sizeof(ser_addr))==-1)
  42. error("error in binding");
  43. printf("\nbinding successful\n");
  44.  
  45. if(listen(sockfd,5)==-1)
  46. error("error in listening");
  47. printf("\nlisten successfully\n");
  48.  
  49. bzero(recvbuffer,sizeof(recvbuffer));
  50. bzero(sendbuffer,sizeof(sendbuffer));
  51.  
  52.  
  53. newsockfd=accept(sockfd,(struct sockaddr*)NULL,NULL);
  54.  
  55. i=fork();
  56. if(i==0)
  57. {
  58. printf("\nfork reading\n");
  59. while(1)
  60. {
  61. if(read(newsockfd,recvbuffer,sizeof(recvbuffer))<0)
  62. error("error in reading");
  63. printf("\nclient:%s\n",recvbuffer);
  64. bzero(recvbuffer,sizeof(recvbuffer));
  65. }
  66. }
  67. else
  68. {
  69. printf("\n fork writing\n");
  70. while(1)
  71. {
  72. scanf("%s",sendbuffer);
  73. if(write(newsockfd,sendbuffer,sizeof(sendbuffer))<0)
  74. error("error in writing");
  75. }
  76.  
  77. }
  78. close(newsockfd);
  79. return 0;
  80. }
  81.  
  82. Client Side:
  83.  
  84. #include<stdio.h>
  85. #include<stdlib.h>
  86. #include<string.h>
  87. #include<sys/socket.h>
  88. #include<netdb.h>
  89. #include<arpa/inet.h>
  90.  
  91. void error(char *msg)
  92. {
  93. perror(msg);
  94. exit(1);
  95. }
  96.  
  97. int main(int argc,char* argv[])
  98. {
  99. int sockfd,portno;
  100. char recvbuffer[256],sendbuffer[256];
  101. struct sockaddr_in ser_addr;
  102. struct hostent* server;
  103. int i;
  104.  
  105. if(argc<3)
  106. error("./client hostname portno");
  107.  
  108. server=gethostbyname(argv[1]);
  109. portno=atoi(argv[2]);
  110.  
  111. bzero((char*)&ser_addr,sizeof(ser_addr));
  112. ser_addr.sin_family=AF_INET;
  113. bcopy((char*)server->h_addr,(char*)&ser_addr.sin_addr.s_addr,server->h_length);
  114. ser_addr.sin_port=htons(portno);
  115.  
  116. sockfd=socket(AF_INET,SOCK_STREAM,0);
  117. if(sockfd==-1)
  118. error("error in socket descriptor");
  119. printf("\nsocket created\n");
  120.  
  121. if(connect(sockfd,(struct sockaddr*)&ser_addr,sizeof(ser_addr))==-1)
  122. error("error in connect");
  123. printf("\nconnect successfully\n");
  124.  
  125. bzero(recvbuffer,sizeof(recvbuffer));
  126. bzero(sendbuffer,sizeof(sendbuffer));
  127.  
  128. i=fork();
  129. if(i==0)
  130. {
  131. printf("\nfork reading\n");
  132. while(1)
  133. {
  134. if(read(sockfd,recvbuffer,sizeof(recvbuffer))<0)
  135. error("error in reading");
  136. printf("\nserver:%s\n",recvbuffer);
  137. bzero(recvbuffer,sizeof(recvbuffer));
  138. }
  139. }
  140. else
  141. {
  142. printf("\n fork writing\n");
  143. while(1)
  144. {
  145. scanf("%s",sendbuffer);
  146. if(write(sockfd,sendbuffer,sizeof(sendbuffer))<0)
  147. error("error in writing");
  148. }
  149. }
  150. close(sockfd);
  151. return 0;
  152. }
  153.  
  154.  
  155. Output:
  156.  
  157. Server:
  158.  
  159.  
  160.  
  161.  
  162. Client:
  163.  
  164.  
  165. Activity 8
  166. Q8. Develop a TCP Client/Server application for transferring a text file from client to server.
  167.  
  168. SERVER CODE :
  169.  
  170. #include<stdio.h>
  171. #include<stdlib.h>
  172. #include<string.h>
  173. #include<sys/socket.h>
  174. #include<netdb.h>
  175. #include<arpa/inet.h>
  176.  
  177. void error(char *msg)
  178. {
  179. perror(msg);
  180. exit(1);
  181. }
  182.  
  183. int main(int argc,char* argv[])
  184. {
  185. int sockfd,newsockfd,portno;
  186. char buffer[256];
  187. struct sockaddr_in ser_addr;
  188.  
  189. if(argc<2)
  190. error("./server portno");
  191.  
  192. portno=atoi(argv[1]);
  193.  
  194. bzero((char*)&ser_addr,sizeof(ser_addr));
  195. ser_addr.sin_family=AF_INET;
  196. ser_addr.sin_addr.s_addr=INADDR_ANY;
  197. ser_addr.sin_port=htons(portno);
  198.  
  199. sockfd=socket(AF_INET,SOCK_STREAM,0);
  200. if(sockfd==-1)
  201. error("error in socket descriptor");
  202. printf("\nsocket created\n");
  203.  
  204. if(bind(sockfd,(struct sockaddr*)&ser_addr,sizeof(ser_addr))==-1)
  205. error("error in binding");
  206. printf("\nbinding successful\n");
  207.  
  208. if(listen(sockfd,5)==-1)
  209. error("error in listening");
  210. printf("\nlisten successfully\n");
  211.  
  212. newsockfd=accept(sockfd,NULL,NULL);
  213.  
  214. FILE* fp;
  215. int nread;
  216. fp=fopen("sample.txt","ab");
  217. if(fp==NULL)
  218. error("error in file opening");
  219.  
  220. while((nread=read(newsockfd,buffer,sizeof(buffer)))>0)
  221. {
  222. fwrite(buffer,1,nread,fp);
  223. bzero(buffer,sizeof(buffer));
  224. }
  225.  
  226. close(newsockfd);
  227. return 0;
  228. }
  229.  
  230.  
  231. CLIENT CODE :
  232.  
  233. #include<stdio.h>
  234. #include<stdlib.h>
  235. #include<string.h>
  236. #include<sys/socket.h>
  237. #include<netdb.h>
  238. #include<arpa/inet.h>
  239.  
  240. void error(char *msg)
  241. {
  242. perror(msg);
  243. exit(1);
  244. }
  245.  
  246. int main(int argc,char* argv[])
  247. {
  248. int sockfd,portno;
  249. char buffer[256];
  250. struct sockaddr_in ser_addr;
  251. struct hostent* server;
  252.  
  253. if(argc<3)
  254. error("./client hostname portno");
  255.  
  256. server=gethostbyname(argv[1]);
  257. portno=atoi(argv[2]);
  258.  
  259. bzero((char*)&ser_addr,sizeof(ser_addr));
  260. ser_addr.sin_family=AF_INET;
  261. bcopy((char*)server->h_addr,(char*)&ser_addr.sin_addr.s_addr,server->h_length);
  262. ser_addr.sin_port=htons(portno);
  263.  
  264. sockfd=socket(AF_INET,SOCK_STREAM,0);
  265. if(sockfd==-1)
  266. error("error in socket descriptor");
  267. printf("\nsocket created\n");
  268.  
  269. if(connect(sockfd,(struct sockaddr*)&ser_addr,sizeof(ser_addr))==-1)
  270. error("error in connect");
  271. printf("\nconnect successfully\n");
  272.  
  273. FILE* fp;
  274. int nread;
  275. fp=fopen("sample1.txt","r");
  276. if(fp==NULL)
  277. error("error in file opening");
  278.  
  279. while(1)
  280. {
  281. nread=fread(buffer,1,sizeof(buffer),fp);
  282. if(nread>0)
  283. write(sockfd,buffer,nread);
  284. if(nread<256)
  285. {
  286. if(feof(fp))
  287. printf("\nEnd of file\n");
  288.  
  289. if(ferror(fp))
  290. printf("\n error in file\n");
  291.  
  292. break;
  293. }
  294. }
  295. close(sockfd);
  296. return 0;
  297. }
  298.  
  299. Output:
  300.  
  301. Server Side:
  302.  
  303. Client Side:
  304.  
  305.  
  306. ACTIVITY 9
  307. Question :
  308.  
  309. Implement a TCP based server program to authenticate the client’s
  310. Username and
  311. Password. The authenticity of the client must be sent as
  312. the reply mess age to the client and display the
  313. same on the standard output.
  314.  
  315. Code :Server :
  316. #include <stdio.h>
  317. #include <stdlib.h>
  318. #include <unistd.h>
  319. #include <errno.h>
  320. #include <string.h>
  321. #include <netdb.h>
  322. #include <sys/types.h>
  323. #include <netinet/in.h>
  324. #include <sys/socket.h>
  325. #include <arpa/inet.h>
  326. int main(int argc, char *argv[])
  327. {
  328. int sock_des,port,n1,n2,s1,s2;
  329. char null_character;
  330. char buffer1[100],buffer2[100],buffer3[100],buffer4[100];
  331. int length,new_des;
  332. struct sockaddr_in server_addr,client_addr;
  333. bzero(buffer3,sizeof(buffer3));
  334. printf("\n Input Authentic Username :\n");
  335. scanf("%s",buffer3);
  336. bzero(buffer4,sizeof(buffer4));
  337. printf("\n Input Authentic Password :\n");
  338. scanf("%s",buffer4);
  339. if(argc!=2)
  340. {
  341. printf("Usage: ./server port\n");
  342. exit(1);
  343. }
  344. port= atoi(argv[1]);
  345. if((sock_des=socket(AF_INET,SOCK_STREAM,0))==-1)
  346. {
  347. perror("socket");
  348. exit(1);
  349. }
  350.  
  351. server_addr.sin_family = AF_INET;
  352. server_addr.sin_port = htons(port);
  353. server_addr.sin_addr.s_addr= htonl(INADDR_ANY);
  354. if (bind(sock_des,(const struct sockaddr *)&server_addr,sizeof(struct sockaddr))==-1)
  355. {
  356. perror("bind");
  357. exit(1);
  358. }
  359. if( listen(sock_des,5)==-1)
  360. {
  361. perror("listen");
  362. exit(1);
  363. }
  364. printf("Server is listening at port %d \n", port);
  365. while(1)
  366. {
  367. if((new_des=accept(sock_des,(struct sockaddr *)&client_addr,&length))==-1)
  368. {
  369. perror("accept");
  370. exit(1);
  371. }
  372. bzero(buffer1,sizeof(buffer1));
  373. n1=read(new_des,buffer1,sizeof(buffer1));
  374. buffer1[n1]=null_character;
  375. if((s1=strcmp(buffer1,buffer3))==0)
  376. {
  377. write(new_des,"Username Match!Enter Password",30);
  378. printf("Username Match !!!\n");
  379. bzero(buffer2,sizeof(buffer2));
  380. n2=read(new_des,buffer2,sizeof(buffer2));
  381. buffer2[n2]=null_character;
  382. if((s2=strcmp(buffer2,buffer4))==0)
  383. {
  384. write(new_des,"Password Match",15);
  385. printf("Password Match !!!\n");
  386. }
  387. else
  388. {
  389. write(new_des,"Password NOT Match",19);
  390. printf("Password NOT Match !!!\n");
  391. }
  392. }
  393. else
  394. {
  395. write(new_des,"Username Not Match",19);
  396. printf("Username Not Match !!!\n");
  397. }
  398. close(new_des);
  399. }
  400. }
  401.  
  402. Client :-
  403.  
  404. #include <stdio.h>
  405. #include <stdlib.h>
  406. #include <unistd.h>
  407. #include <errno.h>
  408. #include <string.h>
  409. #include <netdb.h>
  410. #include <sys/types.h>
  411. #include <netinet/in.h>
  412. #include <sys/socket.h>
  413. #include <arpa/inet.h>
  414. int main(int argc,char *argv[])
  415. {
  416. int sock_des,port,n;
  417. char null_character;
  418. struct hostent *host;
  419. char buffer1[100],buffer2[100],buffer3[100],buffer4[100];
  420. struct sockaddr_in server_addr;
  421. if(argc!=3)
  422. {
  423. printf("Usage: ./client hostname port\n");
  424. exit(1);
  425. }
  426. if((host=gethostbyname(argv[1]))==NULL)
  427. {
  428. printf("Unknown Host\n");
  429. exit(1);
  430. }
  431. port = atoi(argv[2]);
  432. if((sock_des=socket(AF_INET,SOCK_STREAM,0))==-1)
  433. {
  434. perror("socket");
  435. exit(1);
  436. }
  437. server_addr.sin_family = AF_INET;
  438. server_addr.sin_port = htons(port);
  439. server_addr.sin_addr = *((struct in_addr *)host->h_addr);
  440. if(connect(sock_des,(struct sockaddr *)&server_addr,sizeof(struct sockaddr))==-1)
  441. {
  442. perror("connect");
  443. exit(1);
  444. }
  445. bzero(buffer1,sizeof(buffer1));
  446. printf("Enter the Username :\n");
  447. scanf("%s",buffer1);
  448. write(sock_des,buffer1,sizeof(buffer1));
  449. bzero(buffer4,sizeof(buffer4));
  450.  
  451. n=read(sock_des,buffer4,sizeof(buffer4));
  452. buffer4[n]= null_character;
  453. printf("Server Sent : %s\n", buffer4);
  454. bzero(buffer2,sizeof(buffer2));
  455. printf("Enter the Password :\n");
  456. scanf("%s",buffer2);
  457. write(sock_des,buffer2,sizeof(buffer2));
  458. bzero(buffer3,sizeof(buffer3));
  459. n=read(sock_des,buffer3,sizeof(buffer3));
  460. buffer3[n]=null_character;
  461. printf("Server Sent : %s\n", buffer3);
  462. close(sock_des);
  463. }
  464.  
  465. Server Side:
  466.  
  467.  
  468. Client Side:
  469.  
  470.  
  471.  
  472. Activity 10:
  473.  
  474. Aim: To Implement a message transfer from client to server
  475. process using UDP.
  476.  
  477. Server:
  478. #include <arpa/inet.h>
  479. #include <netinet/in.h>
  480. #include <stdio.h>
  481. #include <sys/types.h>
  482. #include <sys/socket.h>
  483. #include <unistd.h>
  484. #include <stdlib.h>
  485. #include <string.h>
  486. #define BUFLEN 512
  487. #define PORT 9930
  488. void err(char *str)
  489. {
  490. perror(str);
  491. exit(1);
  492. }
  493. int main(void)
  494. {
  495. struct sockaddr_in my_addr, cli_addr;
  496. int sockfd, i;
  497. socklen_t slen=sizeof(cli_addr);
  498. char buf[BUFLEN];
  499. if ((sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP))==-1)
  500. err("socket");
  501. else
  502. printf("Server : Socket() successful\n");
  503. bzero(&my_addr, sizeof(my_addr));
  504. my_addr.sin_family = AF_INET;
  505. my_addr.sin_port = htons(PORT);
  506. my_addr.sin_addr.s_addr = htonl(INADDR_ANY);
  507. if (bind(sockfd, (struct sockaddr* ) &my_addr, sizeof(my_addr))==-1)
  508. err("bind");
  509. else
  510. printf("Server : bind() successful\n");
  511. while(1)
  512. {
  513. if (recvfrom(sockfd, buf, BUFLEN, 0, (struct sockaddr*)&cli_addr,
  514. &slen)==-1)
  515. err("recvfrom()");
  516. printf("Received packet from %s:%d\nData: %s\n\n",
  517. inet_ntoa(cli_addr.sin_addr), ntohs(cli_addr.sin_port), buf);
  518. }
  519. close(sockfd);
  520. return 0;
  521. }
  522.  
  523.  
  524. Client:
  525. #include <arpa/inet.h>
  526. #include <netinet/in.h>
  527. #include <stdio.h>
  528. #include <sys/types.h>
  529. #include <sys/socket.h>
  530. #include <unistd.h>
  531. #include <stdlib.h>
  532. #include <string.h>
  533. #define BUFLEN 512
  534. #define PORT 9930
  535. void err(char *s)
  536. {
  537. perror(s);
  538. exit(1);
  539. }
  540. int main(int argc, char** argv)
  541. {
  542. struct sockaddr_in serv_addr;
  543. int sockfd, i, slen=sizeof(serv_addr);
  544. char buf[BUFLEN];
  545. if(argc != 2)
  546. {
  547. printf("Usage : %s <Server-IP>\n",argv[0]);
  548. exit(0);
  549. }
  550. if ((sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP))==-1)
  551. err("socket");
  552. bzero(&serv_addr, sizeof(serv_addr));
  553. serv_addr.sin_family = AF_INET;
  554. serv_addr.sin_port = htons(PORT);
  555. if (inet_aton(argv[1], &serv_addr.sin_addr)==0)
  556. {
  557. fprintf(stderr, "inet_aton() failed\n");
  558. exit(1);
  559. }
  560. while(1)
  561. {
  562. printf("\nEnter data to send(Type exit and press enter to exit) : ");
  563. scanf("%[^\n]",buf);
  564. getchar();
  565. if(strcmp(buf,"exit") == 0)
  566. exit(0);
  567. if (sendto(sockfd, buf, BUFLEN, 0, (struct sockaddr*)&serv_addr,
  568. slen)==-1)
  569. err("sendto()");
  570. }
  571. close(sockfd);
  572. return 0;
  573. }
  574.  
  575. Output:
  576.  
  577. Server side;
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586. Client Side:
  587.  
  588.  
  589.  
  590. Activity 11:
  591.  
  592. AIM: To write a program for UDP echo client server.
  593. CODE :
  594. SERVER:
  595. #include<sys/types.h>
  596. #include<sys/socket.h>
  597. #include<netinet/in.h>
  598. #include<unistd.h>
  599. #include<netdb.h>
  600. #include<stdio.h>
  601. #include<string.h>
  602. #include<arpa/inet.h>
  603. #define MAXLINE 1024
  604. int main(int argc,char **argv)
  605. {
  606. int sockfd;
  607. int n;
  608. socklen_t len;
  609. char msg[1024];
  610. struct sockaddr_in servaddr,cliaddr;
  611. sockfd=socket(AF_INET,SOCK_DGRAM,0);
  612. bzero(&servaddr,sizeof(servaddr));
  613. servaddr.sin_family=AF_INET;
  614. servaddr.sin_addr.s_addr=INADDR_ANY;
  615. servaddr.sin_port=htons(5035);
  616. printf("\n\n Binded");
  617. bind(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr));
  618. printf("\n\n Listening...");
  619. for(;;)
  620. {
  621. printf("\n ");
  622. len=sizeof(cliaddr);
  623. n=recvfrom(sockfd,msg,MAXLINE,0,(struct
  624. sockaddr*)&cliaddr,&len);
  625. printf("\n Client's Message : %s\n",msg);
  626. if(n<6)
  627. perror("send error");
  628. sendto(sockfd,msg,n,0,(struct sockaddr*)&cliaddr,len);
  629. }
  630. return 0;
  631. }
  632.  
  633. CLIENT:
  634. #include<sys/types.h>
  635. #include<sys/socket.h>
  636. #include<netinet/in.h>
  637. #include<string.h>
  638. #include<arpa/inet.h>#include<string.h>
  639. #include<arpa/inet.h>
  640. #include<stdio.h>
  641. #define MAXLINE 1024
  642. int main(int argc,char* argv[])
  643. {
  644. int sockfd;
  645. int n;
  646. socklen_t len;
  647. char sendline[1024],recvline[1024];
  648. struct sockaddr_in servaddr;
  649. strcpy(sendline,"");
  650. printf("\n Enter the message : ");
  651. scanf("%s",sendline);
  652. sockfd=socket(AF_INET,SOCK_DGRAM,0);
  653. bzero(&servaddr,sizeof(servaddr));
  654. servaddr.sin_family=AF_INET;
  655. servaddr.sin_addr.s_addr=inet_addr("127.0.0.1");
  656. servaddr.sin_port=htons(5035);
  657. connect(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr));
  658. len=sizeof(servaddr);
  659. sendto(sockfd,sendline,MAXLINE,0,(struct sockaddr*)&servaddr,len);
  660. n=recvfrom(sockfd,recvline,MAXLINE,0,NULL,NULL);
  661. recvline[n]=0;
  662. printf("\n Server's Echo : %s\n\n",recvline);
  663. return 0;
  664. }
  665.  
  666. Output:
  667.  
  668.  
  669.  
  670. Server Side;
  671.  
  672.  
  673. Client Side:
Add Comment
Please, Sign In to add comment