示例#1
0
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;
}
示例#2
0
/**
* 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;
}
示例#3
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;
} 
示例#4
0
文件: client.c 项目: gurujam/oposum
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;
}
示例#5
0
文件: client.c 项目: mlboua/Quoridor
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);
}