Advertisement
Guest User

Untitled

a guest
Mar 9th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.85 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <sys/socket.h>
  4. #include <netinet/in.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <netdb.h>
  8. #include <arpa/inet.h>
  9. #include <unistd.h>
  10.  
  11. void error(char *msg)
  12. {
  13. perror(msg);
  14. exit(1);
  15. }
  16.  
  17. int main(int argc, char *argv[])
  18. {
  19. int sockfd, newsockfd, portno, clilen;
  20. char buffer[256];
  21. struct sockaddr_in serv_addr, cli_addr;
  22. int n;
  23. char *result1 = "Ian G. Harris";
  24. char *result2 = "Joe Smith";
  25. char *result3 = "Jane Smith";
  26.  
  27. if (argc < 2) {
  28. fprintf(stderr,"ERROR, no port providedn");
  29. exit(1);
  30. }
  31.  
  32. sockfd = socket(AF_INET, SOCK_STREAM, 0);
  33. if (sockfd < 0)
  34. error("ERROR opening socket");
  35. bzero((char *) &serv_addr, sizeof(serv_addr));
  36. portno = atoi(argv[1]);
  37. serv_addr.sin_family = AF_INET;
  38. serv_addr.sin_addr.s_addr = INADDR_ANY;
  39. serv_addr.sin_port = htons(portno);
  40. if (bind(sockfd, (struct sockaddr *) &serv_addr,
  41. sizeof(serv_addr)) < 0)
  42. error("ERROR on binding");
  43. listen(sockfd,5);
  44. clilen = sizeof(cli_addr);
  45. newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);
  46. if (newsockfd < 0)
  47. error("ERROR on accept");
  48. printf("Address server startedn");
  49. while (strcmp(buffer, "+++n") != 0)
  50. {
  51. bzero(buffer,256);
  52. n = read(newsockfd,buffer,255);
  53. if (n < 0) error("ERROR reading from socket");
  54. if (strcmp(buffer, "harris@ics.uci.edun") == 0)
  55. {
  56. printf("%sn", result1);
  57. n = write(newsockfd,"harris@ics.uci.edu",18);
  58. if (n < 0) error("ERROR writing to socket");
  59. }
  60. else if(strcmp(buffer, "joe@cnn.comn") == 0)
  61. {
  62. printf("%sn", result2);
  63. n = write(newsockfd,"joe@cnn.com",18);
  64. if (n < 0) error("ERROR writing to socket");
  65. }
  66. else if(strcmp(buffer, "jane@slashdot.orgn")==0)
  67. {
  68. printf("%sn", result3);
  69. n = write(newsockfd,"jane@slashdot.org",18);
  70. if (n < 0) error("ERROR writing to socket");
  71. }
  72. }
  73. return 0;
  74. }
  75.  
  76. #include <stdio.h>
  77. #include <sys/types.h>
  78. #include <sys/socket.h>
  79. #include <netinet/in.h>
  80. #include <netdb.h>
  81. #include <stdlib.h>
  82. #include <string.h>
  83. #include <arpa/inet.h>
  84. #include <unistd.h>
  85.  
  86. void error(char *msg)
  87. {
  88. perror(msg);
  89. exit(0);
  90. }
  91.  
  92. int main(int argc, char *argv[])
  93. {
  94. int sockfd, portno, n;
  95. struct sockaddr_in serv_addr;
  96. struct hostent *server;
  97.  
  98. char buffer[256];
  99. if (argc < 3) {
  100. fprintf(stderr,"usage %s hostname portn", argv[0]);
  101. exit(0);
  102. }
  103. portno = atoi(argv[2]);
  104. sockfd = socket(AF_INET, SOCK_STREAM, 0);
  105. if (sockfd < 0)
  106. error("ERROR opening socket");
  107. server = gethostbyname(argv[1]);
  108. if (server == NULL) {
  109. fprintf(stderr,"ERROR, no such hostn");
  110. exit(0);
  111. }
  112. bzero((char *) &serv_addr, sizeof(serv_addr));
  113. serv_addr.sin_family = AF_INET;
  114. bcopy((char *)server->h_addr,
  115. (char *)&serv_addr.sin_addr.s_addr,
  116. server->h_length);
  117. serv_addr.sin_port = htons(portno);
  118. if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0)
  119. error("ERROR connecting");
  120. while (strcmp(buffer, "+++n") != 0)
  121. {
  122. printf("> ");
  123. bzero(buffer,256);
  124. fgets(buffer,255,stdin);
  125. n = write(sockfd,buffer,strlen(buffer));
  126. if (n < 0)
  127. error("ERROR writing to socket");
  128. if (strcmp(buffer, "+++n") == 0)
  129. {
  130. exit(0);
  131. }
  132. bzero(buffer,256);
  133. n = read(sockfd,buffer,255);
  134. if (n < 0)
  135. error("ERROR reading from socket");
  136. printf("%sn",buffer);
  137. }
  138. return 0;
  139. }
  140.  
  141. > harris@ics.uci.edu
  142. Ian G. Harris
  143. > joe@cnn.com
  144. Joe Smith
  145. >
  146.  
  147. Address server started
  148. harris@ics.uci.edu
  149. joe@cnn.com
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement