int main(){ char tampon[MAX]; int numClient = socketClient("localhost", 7777, TCP); int nb = read(numClient, tampon, MAX); write(1, tampon, nb); printf("%s\n" , tampon); close(numClient); return EXIT_SUCCESS; }
/** * function: extractText(char *host, char *path, SLIST *wordList) * This function duplicates the functionality of extraction * function, intended to parse a .txt file on some remote host. **/ int extractText(char *host, char *path, SLIST *wordList) { int conn; char buff[(BUFFSIZE + 1)] = {0}; int len; struct String *textString = createStr(); //struct String *tempWordList = createStr(); /* contact the web server */ conn = socketClient(host, HTTPPORT); if (conn < 0) { exit(1); } /* send an HTTP/1.1 request to the webserver */ sprintf(buff, "GET %s HTTP/1.1\r\nHost: %s\r\n", path, host); strcat(buff, "User-Agent: self-module\r\n"); strcat(buff, "Accept: text/plain,text/html\r\n"); strcat(buff, "Accept-Language: en-us,en;q=0.5\r\n"); strcat(buff, "Accept-Charset: ISO-8859-1,utf-8;q=0.7\r\n"); strcat(buff, "Keep-Alive: 115\r\n"); strcat(buff, "Connection: keep-alive\r\n"); strcat(buff, "\r\n"); len = strlen(buff); (void) send(conn, buff, len, 0); /* convert all data received into chunks, append it to textString */ while((len = recv(conn, buff, BUFFSIZE, 0)) > 0) { appendLit(textString, buff); memset(buff, 0, BUFFSIZE); } //cleaning text string by replacing all non-alphanumeric characters with spaces. truncateStr(textString); charSplit(wordList, textString, ' '); //cleaning word list based on existing stop words //printf("Started removing stop words.\n"); rmStopWords(wordList); //free up memory //printf("Extraction: destroying textString.\n"); destroyStr(textString); return 0; }
int extraction(char *host, char *path, SLIST *wordList, SLIST *urlList) { int conn; char buff[(BUFFSIZE + 1)] = {0}; int len; struct String *htmlString = createStr(); //Contains raw html pulled from web page struct String *cleanString = createStr(); //Contains the truncated html code struct String *baseURL = createStr(); //Contains the url in the <base href = ""> /* contact the web server */ conn = socketClient(host, HTTPPORT); if (conn < 0) { exit(1); } /* send an HTTP/1.1 request to the webserver */ sprintf(buff, "GET %s HTTP/1.1\r\nHost: %s\r\n", path, host); strcat(buff, "User-Agent: self-module\r\n"); strcat(buff, "Accept: text/html,application/xhtml+xml\r\n"); strcat(buff, "Accept-Language: en-us,en;q=0.5\r\n"); // strcat(buff, "Accept-Encoding: gzip,defalte\r\n"); strcat(buff, "Accept-Charset: ISO-8859-1,utf-8;q=0.7\r\n"); strcat(buff, "Keep-Alive: 115\r\n"); strcat(buff, "Connection: keep-alive\r\n"); strcat(buff, "\r\n"); len = strlen(buff); (void) send(conn, buff, len, 0); /* convert all data received into chunks, append it to htmlString */ while((len = recv(conn, buff, BUFFSIZE, 0)) > 0) { appendLit(htmlString, buff); memset(buff, 0, BUFFSIZE); } //Parsing base url if (-1 == parseBaseURL(baseURL, htmlString)) { printf("Could not locate base url.\n"); return -1; } //Parsing url links //printf("Building url link list.\n"); buildLinkList(urlList, htmlString, baseURL); //Add the url that the crawler parsed the html from urlList->key = createStr(); appendStr(urlList->key, baseURL); //creating word list appendStr(cleanString, htmlString); //cleaning html string by replacing all non-alphanumeric characters with spaces. truncateStr(cleanString); charSplit(wordList, cleanString, ' '); wordList->key = createStr(); appendStr(wordList->key, baseURL); //cleaning word list based on existing stop words //printf("Started removing stop words.\n"); rmStopWords(wordList); //free up memory //printf("Extraction: destroying htmlString, cleanString, & baseURL.\n"); destroyStr(htmlString); destroyStr(cleanString); destroyStr(baseURL); return 0; }
int main(int argc, char **argv){ if(argc != 3){ printf("Il faut 2 parametres (IP et port).\n"); return EXIT_FAILURE; } /* ################################################################################ */ /* ######################### DECLARATIONS DES VARIABLES ######################### */ /* ################################################################################ */ /* IP du serveur */ char *realIP; /* Ma socket */ int maSock; /* Chaine des fichiers demander */ char chaineFichiers[2048]; /* Taille du fichier demander */ char tailleFichier[32]; /* Contenu du fichier demander */ char contenuFichier[TAILLE_BUFFER_FICHIER]; /* Tableau des noms des fichiers à demander */ char *tableauNomsFichiers; /* Accusé de récéption */ char ack[16]; /* Fichier à remplir */ FILE* fichier = NULL; /* Nombre total de caractères reçus, nombre de caractères reçus */ int nbCarRecuTotal, nbCarRecu; /* ################################################################################ */ /* ############################# CORPS DU PROGRAMME ############################# */ /* ################################################################################ */ /* Récupération de l'IP du serveur */ if((realIP = getIPParNom(argv[1])) == NULL) return EXIT_FAILURE; maSock = socketClient(TCP, realIP, atoi(argv[2])); /* Tant que l'on envoi pas une chaine vide */ while(1){ /* Réinitialisation de la variable */ memset(chaineFichiers, 0, sizeof(chaineFichiers)); printf("\nSaisissez la liste des fichiers a telecharger (peut etre sous forme de chemin) : \n"); /* On demande la liste des fichiers à télécharger */ fgets(chaineFichiers, sizeof(chaineFichiers), stdin); /* Sort du while si on envoi une chaine vide */ if(chaineFichiers[0] == '\n') break; /* Supprime le \n de fin */ chaineFichiers[strlen(chaineFichiers) - 1] = '\0'; /* Découpe la chaine de caractère en tableau (1 case = 1 nom de fichier) */ tableauNomsFichiers = strtok(chaineFichiers, " "); /* Tant qu'il y a des fichiers qui n'ont pas été traiter */ while(tableauNomsFichiers != NULL){ /* Envoi le nom du fichier à télécharger */ if(send(maSock, tableauNomsFichiers, strlen(tableauNomsFichiers), 0) == -1){ perror("Erreur send() "); close(maSock); return EXIT_FAILURE; } else{ /* 1er recv (tailleFichier ou -1) */ if(recv(maSock, tailleFichier, sizeof(tailleFichier), 0) == -1){ perror("Erreur recv() "); close(maSock); return EXIT_FAILURE; } strcpy(ack, "0"); /* Envoi de l'accusé de récéption */ if(send(maSock, ack, strlen(ack), 0) == -1){ perror("Erreur send() "); close(maSock); return EXIT_FAILURE; } if(strcmp(tailleFichier, "-1") != 0){ /* On extrait le nom du fichier (car peut etre un chemin) */ char* temp = strdup(tableauNomsFichiers); char* nomFichier = basename(temp); /* On créer/ouvre le fichier */ if((fichier = fopen(nomFichier, "wb+")) == NULL) perror("Erreur fopen() "); } nbCarRecuTotal = 0; /* Tant que le fichier n'est pas totalement reçus */ do{ /* Réinitialisation de la variable */ memset(contenuFichier, 0, sizeof(contenuFichier)); /* Récupération du contenu du fichier */ if((nbCarRecu = recv(maSock, contenuFichier, sizeof(contenuFichier), 0)) == -1){ perror("Erreur recv() "); close(maSock); return EXIT_FAILURE; } /* Si la taille = -1, afficher l'erreur */ if(strcmp(tailleFichier, "-1") == 0){ printf("Erreur sur le fichier %s : %s \n", tableauNomsFichiers, contenuFichier); } else{ /* On se place à l'endroit où il faut écrire */ fseek(fichier, nbCarRecuTotal, SEEK_SET); fwrite(contenuFichier, 1, nbCarRecu, fichier); } nbCarRecuTotal = nbCarRecuTotal + nbCarRecu; printf("%d/%d octets recus\n", nbCarRecuTotal, atoi(tailleFichier)); }while(nbCarRecuTotal < atoi(tailleFichier)); if(strcmp(tailleFichier, "-1") != 0){ fclose(fichier); printf("Le fichier %s a bien ete telecharge. \n", tableauNomsFichiers); } } tableauNomsFichiers = strtok(NULL, " "); } } close(maSock); return EXIT_SUCCESS; }
main(int argc, char **argv) { char chaine[TAIL_BUF] ; int sock, /* descripteur de la socket locale */ err; /* code d'erreur */ TypPartieReq demande; TypPartieRep rep; TypCoupReq coup; TypCoupRep repCoup; demande.idRequest = PARTIE; /* * verification des arguments */ if (argc != 3) { printf("usage : client nom_machine no_port\n"); exit(1); } /* * creation d'une socket, domaine AF_INET, protocole TCP */ printf("client : connect to %s, %d\n", argv[1], atoi(argv[2])); sock = socketClient(argv[1], atoi(argv[2])); if (sock < 0) { printf("client : erreur socketClient\n"); exit(2); } printf("client : nom du joueur :\t"); scanf("%s",demande.nomJoueur); err = send(sock, &demande, sizeof(demande), 0); if (err < 0) { perror("client : erreur sur le send"); shutdown(sock, 2); close(sock); exit(3); } printf("client : envoi realise\n"); err = recv(sock, &rep, sizeof(rep), 0); if (err < 0) { perror("client : erreur dans la reception"); shutdown(sock, 2);close(sock); exit(4); } if(rep.err != ERR_OK){ printf("client : Une erreur est survenue lors de l'operation \n"); exit(5); } printf("client : nom de l'adversiare : %s et couleur du pion %d\n", rep.nomAdvers,rep.couleur); if(rep.couleur == 0){ printf("Envoi du coup\n"); coup.idRequest = COUP; coup.couleurPion = BLANC; coup.propCoup = POS_MUR; coup.posMur.caseMur.axeLettre = AXE_E; coup.posMur.caseMur.axeChiffre = AXE_UN; coup.posMur.orientMur = HOR; //coup.posMur.caseArrPion.axeLettre = AXE_E; err = send(sock, &coup, sizeof(coup), 0); if (err < 0) { perror("client : erreur sur le send"); shutdown(sock, 2); close(sock); exit(3); } printf("Coup envoyé\n"); } err = recv(sock, &repCoup, sizeof(repCoup), 0); if (err < 0) { perror("client : erreur dans la reception"); shutdown(sock, 2);close(sock); exit(4); } printf("Coup de l'adversaire : \n"); coup.idRequest = COUP; coup.couleurPion = BLANC; coup.propCoup = DEPL_PION; coup.deplPion.caseDepPion.axeLettre = AXE_E; coup.deplPion.caseDepPion.axeChiffre = AXE_UN; coup.deplPion.caseArrPion.axeChiffre = AXE_DEUX; coup.deplPion.caseArrPion.axeLettre = AXE_E; err = send(sock, &coup, sizeof(coup), 0); if (err < 0) { perror("client : erreur sur le send"); shutdown(sock, 2); close(sock); exit(3); } /* * fermeture de la connexion et de la socket */ shutdown(sock, 2); close(sock); }