/* streamCli.c - sockets */ #include #include #include #include #include #include #include #include #define PORT_SERVEUR 2222 #include "creerSocket.h" #include "streamOp.h" int main (int argc, char * argv []) { int sock, ok; unsigned short port; struct hostent* hp ; struct sockaddr_in adr ; socklen_t lgradr ; long l, lrep; if (argc < 2) { fprintf(stderr, "Mauvais nombre d'arguments\n"); fprintf(stderr, "=> Utilisation : %s machineServeur\n",argv[0]); exit(EXIT_FAILURE) ; } port = 0; sock = creerSocket(&port, SOCK_STREAM); /***************************************/ /* Preparation de l'adresse du serveur */ /***************************************/ hp = gethostbyname (argv [1]); if (hp == NULL) { perror("gethostbyname"); exit(EXIT_FAILURE); } lgradr = sizeof(struct sockaddr_in); memset(&adr, 0, lgradr); adr.sin_family = AF_INET; adr.sin_port = htons (PORT_SERVEUR); adr.sin_addr = *((struct in_addr *) (hp -> h_addr_list[0])); /* et Aussi ... adr.sin_addr.s_addr = *((u_int32_t*) (hp -> h_addr_list[0])); memcpy(&adr.sin_addr, hp -> h_addr, hp -> h_length); adr.sin_addr.s_addr = ((struct in_addr*)(hp -> h_addr))->s_addr; */ /****************************************/ /* Demande de connexion */ /****************************************/ ok = connect(sock, (struct sockaddr*)&adr, lgradr); if (ok == -1) { perror("connect"); exit(EXIT_FAILURE); } printf("entier a envoyer :"); scanf("%ld",&l); /***************************************/ /* Envoi de l'entier a incrementer */ /***************************************/ ok = writeLong(sock,&l); if (ok==-1 || ok==0) { perror("writeLong"); exit(EXIT_FAILURE); } /***************************************/ /* Reception de l'entier */ /***************************************/ ok = readLong(sock,&lrep); if (ok==-1 || ok==0) { perror("readLong"); exit(EXIT_FAILURE); } /***************************************/ /* Exploitation de la reponse */ /***************************************/ printf("Reponse %ld+1=%ld\n",l,lrep); close(sock); return EXIT_SUCCESS; }