Advertisement
ostyleo

TestSuma

Oct 18th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.21 KB | None | 0 0
  1. //-----------CLIENT-----------
  2.  
  3. #include <sys/types.h>
  4. #include <sys/socket.h>
  5. #include <stdio.h>
  6. #include <netinet/in.h>
  7. #include <netinet/ip.h>
  8. #include <string.h>
  9. #include <unistd.h>
  10. #include <sys/socket.h>
  11. #include <netinet/in.h>
  12. #include <arpa/inet.h>
  13. #include <stdlib.h>
  14.  
  15. int main(int argc, char* argvs[]){
  16.   int c;
  17.   struct sockaddr_in server;
  18.   char ip[20];
  19.   strcpy(ip,argvs[1]);
  20.   int port = atoi(argvs[2]);
  21.  
  22.   c = socket(AF_INET, SOCK_STREAM, 0);
  23.   if(c<0){
  24.     printf("Eroare socket client!\n");
  25.     return 1;
  26.   }
  27.  
  28.   memset(&server, 0 ,sizeof(server));
  29.   server.sin_port = htons(port);
  30.   server.sin_family = AF_INET;
  31.   server.sin_addr.s_addr = inet_addr(ip);
  32.  
  33.   if (connect(c, (struct sockaddr *) &server, sizeof(server)) < 0) {
  34.     printf("Eroare conectarea la server!\n");
  35.     return 1;
  36.   }
  37.   int a,b;
  38.   int suma;
  39.   printf("Introduceti numerele: " );
  40.   scanf("%d",&a);
  41.   send(c,&a,sizeof(a),0);
  42.   recv(c,&suma,sizeof(suma),0);
  43.   printf("%d\n",suma );
  44.  
  45.   close(c);
  46. }
  47.  
  48. //-----------SERVER-----------
  49. #include <sys/types.h>
  50. #include <sys/socket.h>
  51. #include <stdio.h>
  52. #include <netinet/in.h>
  53. #include <netinet/ip.h>
  54. #include <string.h>
  55. #include <stdlib.h>
  56. #include <unistd.h>
  57.  
  58. int main(int argc, char* argvs[]){
  59.     int s,c,l;
  60.     int suma = 0;
  61.     int p[2]; pipe(p);
  62.     struct sockaddr_in server, client;
  63.     int port = atoi(argvs[1]);
  64.  
  65.     s = socket(AF_INET, SOCK_STREAM, 0);
  66.     if(s<0){
  67.         printf("Eroare socket server!\n");
  68.         return 1;
  69.     }
  70.  
  71.     memset(&server, 0, sizeof(server));
  72.     server.sin_port = htons(port);
  73.     server.sin_family = AF_INET;
  74.     server.sin_addr.s_addr = INADDR_ANY;
  75.  
  76.     if(bind(s,(struct sockaddr *) &server ,sizeof(server))<0){
  77.         printf("Eroare la bind!\n");
  78.         return 1;
  79.     }
  80.  
  81.     listen(s,5);
  82.  
  83.     l = sizeof(client);
  84.     memset(&client,0,sizeof(client));
  85.     while(1){
  86.         c=accept(s,(struct sockaddr *) &client, &l);
  87.         printf("S-a conectat un client\n");
  88.         if(fork()==0){
  89.  
  90.             int a;
  91.             recv(c,&a,sizeof(a),MSG_WAITALL);
  92.             suma+=a;
  93.             send(c,&suma,sizeof(suma),0);
  94.             write(p[1],&suma,sizeof(int));
  95.             close(p[0]);close(p[1]);
  96.             close(c);
  97.             return 0;
  98.         }
  99.         read(p[0],&suma,sizeof(int));
  100.         if(suma == 0){
  101.             close(p[0]);close(p[1]);
  102.             break;
  103.         }
  104.     }
  105.     return 0;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement