Advertisement
Guest User

Untitled

a guest
Oct 19th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.79 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <sys/socket.h>
  3. #include <netinet/in.h>
  4. #include <string.h>
  5. #include <malloc.h>
  6. #include <errno.h>
  7. #include <stdlib.h>
  8.  
  9. #define PORT 8080
  10. #define N_CON 5
  11. #define BUF_LEN 6
  12.  
  13. void custom_bind() {
  14.     int sockfd, newsockfd, portno, clilen;
  15.     struct sockaddr_in serv_addr, cli_addr;
  16.     char buffer[BUF_LEN] = "";
  17.     int counter = 0;
  18.  
  19.     sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  20.     if (sockfd < 0) {
  21.         perror("ERROR opening socket");
  22.         exit(1);
  23.     }
  24.  
  25.     bzero((char *) &serv_addr, sizeof(serv_addr));
  26.     portno = PORT;
  27.  
  28.     serv_addr.sin_family = AF_INET;
  29.     serv_addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
  30.     serv_addr.sin_port = htons((uint16_t) portno);
  31.  
  32.     if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) {
  33.         perror("ERROR on binding");
  34.         exit(1);
  35.     }
  36.  
  37.     while(1) {
  38.         listen(sockfd, N_CON);
  39.         clilen = sizeof(cli_addr);
  40.         newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, (socklen_t *) &clilen);
  41.  
  42.         if (newsockfd < 0) {
  43.             perror("ERROR on accept");
  44.             exit(1);
  45.         }
  46.  
  47.          printf("New client connected\n");
  48.          fflush(stdout);
  49.          counter++;
  50.  
  51.          int n = (int) read(newsockfd, &buffer, BUF_LEN * sizeof(char));
  52.          if (n < 0) {
  53.               perror("ERROR reading from socket choice");
  54.               exit(1);
  55.           }
  56.           printf("Command from client: %s\n", buffer);
  57.           if (!strcmp(buffer, "count")) {
  58.               printf("Clients processed: %d\n", counter);
  59.           } else if (!strcmp(buffer, "date")) {
  60.               system("date");
  61.           }
  62.  
  63.     }
  64.     shutdown(newsockfd, 2);
  65. }
  66.  
  67. int main() {
  68.     while (1) {
  69.         custom_bind();
  70.     }
  71.     return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement