Advertisement
Guest User

cli.c

a guest
May 2nd, 2014
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.81 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 <stdlib.h>
  8. #include <netdb.h>
  9. #include <string.h>
  10.  
  11. /* codul de eroare returnat de anumite apeluri */
  12. extern int errno;
  13.  
  14. /* portul de conectare la server*/
  15. int port;
  16.  
  17. int main (int argc, char *argv[])
  18. {
  19.   int sd;           // descriptorul de socket
  20.   struct sockaddr_in server;    // structura folosita pentru conectare
  21.   char msg[100];        // mesajul trimis
  22.   int nr;
  23.  
  24.   /* exista toate argumentele in linia de comanda? */
  25.   if (argc != 3)
  26.     {
  27.       printf ("Sintaxa: %s <adresa_server> <port>\n", argv[0]);
  28.       return -1;
  29.     }
  30.  
  31.   /* stabilim portul */
  32.   port = atoi (argv[2]);
  33.  
  34.   /* cream socketul */
  35.   if ((sd = socket (AF_INET, SOCK_STREAM, 0)) == -1)
  36.     {
  37.       perror ("Eroare la socket().\n");
  38.       return errno;
  39.     }
  40.  
  41.   /* umplem structura folosita pentru realizarea conexiunii cu serverul */
  42.   /* familia socket-ului */
  43.   server.sin_family = AF_INET;
  44.   /* adresa IP a serverului */
  45.   server.sin_addr.s_addr = inet_addr(argv[1]);
  46.   /* portul de conectare */
  47.   server.sin_port = htons (port);
  48.  
  49.   /* ne conectam la server */
  50.   if (connect (sd, (struct sockaddr *) &server,sizeof (struct sockaddr)) == -1)
  51.     {
  52.       perror ("[client]Eroare la connect().\n");
  53.       return errno;
  54.     }
  55.  
  56.   /* citirea mesajului */
  57.   bzero (msg, 100);
  58.   printf ("[client]Introduceti un nr: ");
  59.   scanf("%d",&nr);
  60.  
  61.   /* trimiterea mesajului la server */
  62.   write (sd, &nr, sizeof(int));
  63.   int nrr;
  64.   /* citirea raspunsului dat de server
  65.      (apel blocant pina cind serverul raspunde) */
  66.   read (sd, &nrr, sizeof(int));
  67.   /* afisam mesajul primit */
  68.   printf ("[client]Mesajul primit este: %d\n", nrr);
  69.  
  70.   /* inchidem conexiunea, am terminat */
  71.   close (sd);
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement