rendered paste body#include <sys/types.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <stdio.h>#include <string.h>#include <netinet/in.h>#include <netdb.h>#include <sys/socket.h>#include <arpa/inet.h>/************************************** * Definitions des constantes *************************************/#define LGMAXINFO 1024#define FALSE 0#define TRUE !0/************************************** * Definitions des types *************************************/struct adresse { int port; char domaine[500];};/************************************** * Definitions des variables *************************************/int descServ=-1;int descClt=-1;char msg[LGMAXINFO];char maMachine[LGMAXINFO];/************************************** * Definitions des fonctions *************************************/char * lire(int descSock);int traiter_message(char * msg);void ecrire(int descSock, char * msg);int connexion(struct adresse *address);void ecrireMessage(char* chan, char* message);void chgNick(char* nick);void mp(char* message);int main(int argc, char * argv[]){ struct adresse *adr; adr=malloc(sizeof(adr)); printf("Serveur %s sur le port %d\n", argv[1], atoi(argv[2])); adr->port=atoi(argv[2]); memcpy((void *)adr->domaine, (const void *)argv[1], strlen(argv[1])); descServ=connexion(adr); while(traiter_message(lire(descServ)) != FALSE){ } free(adr); close(descServ); return(1);}/************************************* * Implementation des fonctions ************************************/char * lire(int descSock){ if(descSock == -1){ perror("Probleme de lecture : erreur avec le descripteur"); exit(0); } int err; memset(msg, 0, LGMAXINFO); err=read(descSock, msg, LGMAXINFO); if(err<=0){ perror("Probleme de lecture"); exit(1); } return msg;}int traiter_message(char * msg){ return TRUE;}void ecrire(int descSock, char * msg){ if(descSock == -1){ perror("Probleme d'ecriture : erreur avec le descripteur"); exit(0); } int err; err=write(descSock, msg, strlen(msg)); if(err<=0){ printf("Erreur d'envois du message : %s", msg); perror("Probleme d'ecriture"); exit(1); }}int connexion(struct adresse * address){ int sock, err; struct sockaddr_in sin; struct in_addr *adr; struct hostent *host; sin.sin_family = AF_INET; sin.sin_port=htons((int)address->port); //host=gethostbyname(address->domaine); printf("test\n"); printf("le serveur est : %s\n", address->domaine); host=gethostbyname(address->domaine); printf("test\n"); sin.sin_addr=*(struct in_addr*)host->h_addr; sock = socket (AF_INET, SOCK_DGRAM, 0); if(sock==-1){ printf("Erreur Socket\n"); exit(0); } err=connect(sock, (struct sockaddr *)&sin, sizeof(struct sockaddr)); //free(adr); printf("test2\n"); if(err == -1){ printf("Connection error\n"); } printf("%s\n", lire(sock)); printf("%s\n", lire(sock)); printf("%s\n", lire(sock)); printf("test2\n"); return sock;}