Advertisement
Tobiahao

TCP/IP Server

Jan 21st, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.41 KB | None | 0 0
  1. // TCP/IP SERVER
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <sys/types.h>
  5. #include <sys/socket.h>
  6. #include <netinet/in.h>
  7.  
  8. #define MAX_CLIENT_NUMBER 8
  9.  
  10. int main(int argc, char *argv[])
  11. {
  12.     int sockfd, newsockfd, port, clilen;
  13.     char buffer[256];
  14.     struct sockaddr_in serv_addr, cli_addr;
  15.     int n;
  16.  
  17.     if(argc < 2){
  18.         puts("[-] Error: No port provided");
  19.         return -1;
  20.     }
  21.  
  22.     sockfd = socket(AF_INET, SOCK_STREAM, 0); // socket()
  23.     if(sockfd < 0){
  24.         puts("[-] Error: Opening socket");
  25.         return -1;
  26.     }
  27.  
  28.     memset((char*) &serv_addr, 0, sizeof(serv_addr));
  29.     port = atoi(argv[1]);
  30.  
  31.     serv_addr.sin_family = AF_INET;
  32.     serv_addr.sin_addr.s_addr = INADDR_ANY;
  33.     serv_addr.sin_port = htons(port);
  34.  
  35.     if(bind(sockfd, (struct sockaddr*) &serv_addr, sizeof(serv_addr)) < 0){ // bind()
  36.         printf("[-] Error: Binding");
  37.     }
  38.  
  39.     listen(sockfd, MAX_CLIENT_NUMBER); // listen()
  40.  
  41.     newsockfd = accept(sockfd, (struct sockaddr*) &cli_addr, &clilen); // accept()
  42.     if(newsockfd < 0){
  43.         puts("[-] Error: Accept");
  44.         return -1;
  45.     }
  46.  
  47.     memset(buffer, 0, 256);
  48.  
  49.     n = read(newsockfd, buffer, 255); // read()
  50.     if(n < 0){
  51.         puts("[-] Error: Reading");
  52.         return -1;
  53.     }
  54.  
  55.     printf("Message: %s\n", buffer);
  56.  
  57.     n = write(newsockfd, "Message received!", 17); // write()
  58.     if(n < 0){
  59.         puts("[-] Error: Write");
  60.         return -1;
  61.     }
  62.  
  63.     if(shutdown(sockfd, 2) < 0){ // close()
  64.         puts("[-] Error: Close");
  65.         return -1;
  66.     }
  67.  
  68.     return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement