#include #include #include #include #include void main(int argc, char *argv[]) { int sock; struct in_addr addr; struct sockaddr_in sin; struct hostent *he; char buffer[1024]; if (argc<2) { printf("\n Usage: %s host\n",argv[0]); exit(0); } if ((he=gethostbyname(argv[1])) == NULL) { herror("gethostbyname"); exit(0); } 1 sock=socket(AF_INET, SOCK_STREAM, 0); bcopy(he->h_addr, (char *)&sin.sin_addr, he->h_length); sin.sin_family=AF_INET; sin.sin_port=htons(80); if (connect(sock, (struct sockaddr*)&sin, sizeof(sin))!=0) { perror("connect"); } send(sock, "HEAD / HTTP/1.0\n\n",17,0); recv(sock, buffer, sizeof(buffer),0); close(sock); sock=socket(AF_INET, SOCK_STREAM, 0); bcopy(he->h_addr, (char *)&sin.sin_addr, he->h_length); sin.sin_family=AF_INET; sin.sin_port=htons(80); if (connect(sock, (struct sockaddr*)&sin, sizeof(sin))!=0) { perror("connect"); } send(sock, "GET /cgi-bin/test-cgi",21,0); recv(sock, buffer, sizeof(buffer),0); close(sock); } 2 Cet exemple établie deux connexions sur le port 80 et envoie deux commandes différentes. On ne peut établir plus de deux connections sur ce port si on utilise pas de buffer. Une variable STR sera nécessaire pour récupérer les codes erreurs des donn ées envoyée sur ce port. for(domino=0; domino < 1024; domino++) { lotusbuff[domino] = '\0'; } domino est un entier défini au début du code représentant les données a envoyer. Lotusbuff est un buffer pour pou voir utiliser la fonction d’appel recv Page 7 lts[dm] = strstr(lotusbuff,msg); if (lts[dm] != NULL) printf(lts[dm],"found \n"); else printf(lts[dm],"not found \n"); } }