Advertisement
Guest User

Untitled

a guest
Nov 29th, 2015
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. /* A simple server in the internet domain using TCP
  2. The port number is passed as an argument */
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <unistd.h>
  7. #include <sys/types.h>
  8. #include <sys/socket.h>
  9. #include <netinet/in.h>
  10.  
  11. void error(const char *msg)
  12. {
  13. perror(msg);
  14. exit(1);
  15. }
  16.  
  17. int main(int argc, char *argv[])
  18. {
  19. int packetlen = 64;
  20.  
  21. int sockfd, newsockfd, portno;
  22. socklen_t clilen;
  23. char buffer[1518];
  24. struct sockaddr_in serv_addr, cli_addr;
  25. int n;
  26.  
  27. int issetPortNr = 0;
  28.  
  29. int serveroption = 0;
  30. while(serveroption != 9)
  31. {
  32. printf(":::TCP MENU:::\n\n 1. IP address\n 2. Port\n 3. Packet length\n 4. Upstream\n 5. Downstream\n 6. Upstream/Downstream\n 7. Start server \n 8. Back\n 9. Exit\n\n >");
  33. scanf("%d", &serveroption);
  34.  
  35. switch(serveroption)
  36. {
  37. case 1:
  38. /*cout << "write ip address" << endl;
  39. cin >> ipadr;
  40. cout << ipadr << endl;
  41. */system("pause");
  42.  
  43. system("clear");
  44. break;
  45.  
  46. //Port
  47. case 2:
  48.  
  49. printf("write port number\n");
  50. scanf("%d", &portno);
  51. issetPortNr = 1;
  52.  
  53. system("clear");
  54. break;
  55.  
  56. //Packet length
  57. case 3:
  58. printf("write packet length\n");
  59. scanf("%d", &packetlen);
  60.  
  61.  
  62. system("clear");
  63. break;
  64.  
  65. //Upstream
  66. case 4:
  67. system("clear");
  68. break;
  69.  
  70. //Downstream
  71. case 5:
  72. system("clear");
  73. break;
  74.  
  75. //Upstream/Downstream
  76. case 6:
  77. system("clear");
  78. break;
  79.  
  80. case 7:
  81. system("clear");
  82. serveroption = 9;
  83.  
  84. printf("%d\n", portno);
  85.  
  86. if (argc < 2) {
  87. fprintf(stderr,"ERROR, no port provided\n");
  88. exit(1);
  89. }
  90. sockfd = socket(AF_INET, SOCK_STREAM, 0);
  91. if (sockfd < 0)
  92. error("ERROR opening socket");
  93. bzero((char *) &serv_addr, sizeof(serv_addr));
  94. if (issetPortNr == 0)
  95. {
  96. portno = atoi(argv[1]);
  97. }
  98.  
  99. serv_addr.sin_family = AF_INET;
  100. serv_addr.sin_addr.s_addr = INADDR_ANY;
  101. serv_addr.sin_port = htons(portno);
  102. if (bind(sockfd, (struct sockaddr *) &serv_addr,
  103. sizeof(serv_addr)) < 0)
  104. error("ERROR on binding");
  105. listen(sockfd,5);
  106. clilen = sizeof(cli_addr);
  107. newsockfd = accept(sockfd,
  108. (struct sockaddr *) &cli_addr,
  109. &clilen);
  110. if (newsockfd < 0)
  111. error("ERROR on accept");
  112. bzero(buffer,packetlen);
  113. n = read(newsockfd,buffer,packetlen);
  114. if (n < 0) error("ERROR reading from socket");
  115. printf("Here is the message: %s\n",buffer);
  116. printf("%d\n", n );
  117. n = write(newsockfd,"I got your message",18);
  118. if (n < 0) error("ERROR writing to socket");
  119. close(newsockfd);
  120. close(sockfd);
  121.  
  122.  
  123. break;
  124.  
  125. //Back
  126. case 8:
  127.  
  128. system("clear");
  129. break;
  130.  
  131. //Exit
  132. case 9:
  133. system("clear");
  134.  
  135. serveroption = 3;
  136.  
  137. break;
  138.  
  139. }
  140. }
  141.  
  142.  
  143. return 0;
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement