cp-pum4

Untitled

Feb 1st, 2012
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.60 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 sockfd, newsockfd, portno;
  20.      socklen_t clilen;
  21.      char buffer[256];
  22.      struct sockaddr_in serv_addr, cli_addr;
  23.      int n;
  24.      if (argc < 2) {
  25.          fprintf(stderr,"ERROR, no port provided\n");
  26.          exit(1);
  27.      }
  28.      sockfd = socket(AF_INET, SOCK_STREAM, 0);
  29.      if (sockfd < 0)
  30.         error("ERROR opening socket");
  31.      bzero((char *) &serv_addr, sizeof(serv_addr));
  32.      portno = atoi(argv[1]);
  33.      serv_addr.sin_family = AF_INET;
  34.      serv_addr.sin_addr.s_addr = INADDR_ANY;
  35.      serv_addr.sin_port = htons(portno);
  36.      if (bind(sockfd, (struct sockaddr *) &serv_addr,
  37.               sizeof(serv_addr)) < 0)
  38.               error("ERROR on binding");
  39.      listen(sockfd,5);
  40.      clilen = sizeof(cli_addr);
  41.      newsockfd = accept(sockfd,
  42.                  (struct sockaddr *) &cli_addr,
  43.                  &clilen);
  44.      if (newsockfd < 0)
  45.           error("ERROR on accept");
  46.      bzero(buffer,256);
  47.      n = read(newsockfd,buffer,255);
  48.      if (n < 0) error("ERROR reading from socket");
  49.      printf("Here is the message: %s\n",buffer);
  50.      n = write(newsockfd,"I got your message",18);
  51.      if (n < 0) error("ERROR writing to socket");
  52.      close(newsockfd);
  53.      close(sockfd);
  54.      return 0;
  55. }
Add Comment
Please, Sign In to add comment