Guest User

Untitled

a guest
Oct 22nd, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.77 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <sys/types.h>
  6. #include <sys/socket.h>
  7. #include <netinet/in.h>
  8. #define PORT (ushort) 5002
  9.  
  10. void dostuff(int, int); /* function prototype */
  11. void error(const char *msg)
  12. {
  13.     perror(msg);
  14.     exit(1);
  15. }
  16.  
  17. int main(int argc, char *argv[])
  18. {
  19.  
  20. int sd,ns,len,pid;
  21. int klient = 1;
  22.  
  23. struct sockaddr_in serv,cli;
  24. len= sizeof(cli);
  25. sd=socket(AF_INET,SOCK_STREAM,0);
  26. bzero(&serv,sizeof(serv));
  27. serv.sin_port=htons(PORT);
  28. serv.sin_family=AF_INET;
  29. serv.sin_addr.s_addr=htonl(INADDR_ANY);
  30. /* varje IP-nummer för klient duger */
  31. bind(sd,(struct sockaddr *)&serv,sizeof(serv));
  32. listen(sd,3);
  33. while(1)
  34. {        ns=accept(sd,(struct sockaddr *)&cli,&len);
  35.          if (ns < 0)
  36.              error("ERROR on accept");
  37.          pid = fork();
  38.          if (pid < 0)
  39.              error("ERROR on fork");
  40.          if (pid == 0)  
  41.      {
  42.          close(sd);
  43.      dostuff(ns,klient);
  44.      shutdown(ns,2);
  45.          close(ns);
  46.          exit(0);
  47.          }
  48.          else close(ns);
  49. }
  50.          close(sd);
  51.          return 0;
  52. }
  53.  
  54. void dostuff (int ns, int klient)
  55. {
  56.    int i = 0;
  57.    int n;
  58.    char EnArray[3][30] = {"Nå, vad vill du??", "Jaha...", "Ok"};
  59.    char buffer[256];
  60.  
  61.       while(1) {
  62.            bzero(buffer,256);
  63.            n = read(ns,buffer,255);
  64.            if (n < 0) error("ERROR reading from socket");
  65.            printf("Anrop från klient nr %d: ",klient);
  66.        printf("%s\n", buffer);
  67.        if (strcmp(buffer, "quit\n") == 0) {
  68.        printf("KOMMUNIKATIONEN MED KLIENT NR %d",klient,"AVSLUTAS");
  69.            n = write(ns,"quit",18);
  70.            break;
  71.  
  72.      } else {
  73.        n = write(ns,EnArray[i],18);
  74.            i++;
  75.     }      
  76.        if (n < 0) error("ERROR writing to socket");
  77.     }
  78. }
Add Comment
Please, Sign In to add comment