Advertisement
Guest User

serv.c

a guest
May 2nd, 2014
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.31 KB | None | 0 0
  1. #include <sys/types.h>
  2. #include <sys/socket.h>
  3. #include <netinet/in.h>
  4. #include <errno.h>
  5. #include <unistd.h>
  6. #include <stdio.h>
  7. #include <string.h>
  8. #include <stdlib.h>
  9.  
  10. /* portul folosit */
  11. #define PORT 2021
  12.  
  13. /* codul de eroare returnat de anumite apeluri */
  14. extern int errno;
  15.  
  16. int main ()
  17. {
  18.   struct sockaddr_in server;    // structura folosita de server
  19.   struct sockaddr_in from; 
  20.   char msg[100];        //mesajul primit de la client
  21.   char msgrasp[100]=" ";        //mesaj de raspuns pentru client
  22.   int sd;           //descriptorul de socket
  23.  
  24.   /* crearea unui socket */
  25.   sd = socket (AF_INET, SOCK_STREAM, 0);
  26.  
  27.  
  28.   /* pregatirea structurilor de date */
  29.   bzero (&server, sizeof (server));
  30.   bzero (&from, sizeof (from));
  31.  
  32.   /* umplem structura folosita de server */
  33.   /* stabilirea familiei de socket-uri */
  34.     server.sin_family = AF_INET;   
  35.   /* acceptam orice adresa */
  36.     server.sin_addr.s_addr = htonl (INADDR_ANY);
  37.   /* utilizam un port utilizator */
  38.     server.sin_port = htons (PORT);
  39.  
  40.   /* atasam socketul */
  41.   bind (sd, (struct sockaddr *) &server, sizeof (struct sockaddr));
  42.  
  43.  
  44.   /* punem serverul sa asculte daca vin clienti sa se conecteze */
  45.   listen (sd, 5);
  46.  
  47.  
  48.   /* servim in mod iterativ clientii... */
  49.   while (1)
  50.     {
  51.       int client1,client2,ceva1,ceva2;
  52.       int length = sizeof (from);
  53.  
  54.       printf ("[server]Asteptam la portul %d...\n",PORT);
  55.       fflush (stdout);
  56.  
  57.       /* acceptam un client (stare blocanta pina la realizarea conexiunii) */
  58.       client1 = accept (sd, (struct sockaddr *) &from, &length);
  59.       printf ("[server] Clientul 1 conectat...\n");
  60.       fflush (stdout);
  61.       client2 = accept (sd, (struct sockaddr *) &from, &length);
  62.       printf ("[server] Clientul 2 conectat...\n");
  63.       fflush (stdout);
  64.  
  65.  
  66.       /* s-a realizat conexiunea, se astepta mesajul */
  67.      
  68.       /* citirea mesajului */
  69.       read (client1, &ceva1, sizeof(int));
  70.             printf ("[server]Mesajul 1 a fost receptionat...%s\n", msg);
  71.       read (client2, &ceva2, sizeof(int));
  72.    
  73.       printf ("[server]Mesajul 2 a fost receptionat...%s\n", msg);
  74.      
  75.       /* returnam mesajul clientului */
  76.       write (client1, &ceva2, sizeof(int));
  77.       write (client2, &ceva1, sizeof(int));
  78.      
  79.       close (client1);
  80.       close (client2);
  81.     }               /* while */
  82. }               /* main */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement