4.3 Exemple de serveur 1/2
int main(int argc,char *argv[])
{
int s; /* Descripteur de la SOCKET */
struct sockaddr_in6 adresseServeur; /* Structure adresse du serveur */
socklen_t taille=sizeof adresseServeur;
int statut;
/* Lecture des arguments de la commande */
analyseArguments(argc,argv);
/* Creation de la SOCKET d'ecoute du serveur */
s=socket(PF_INET6,SOCK_DGRAM,0);
if(s<0) {perror("socket"); exit(-1);}
/* Preparation de la structure adresse du serveur */
adresseServeur.sin6_family=AF_INET6;
adresseServeur.sin6_addr=in6addr_any;
adresseServeur.sin6_port=htons(SERVEUR_PORT);
adresseServeur.sin6_flowinfo=0;
adresseServeur.sin6_scope_id=0;
/* Installation du serveur a la bonne adresse */
statut=bind(s,(struct sockaddr *)&adresseServeur,taille);
if(statut<0) {perror("bind"); exit(-1);}
/* Attente de la connexion d'un client puis dialogue avec ce client */
while(1){
struct sockaddr_in6 adresseClient; /* Structure adresse du client */
socklen_t taille=sizeof adresseClient; /* Taille de cette adresse */
char tampon1[MAX_TAMPON];
char tampon2[MAX_TAMPON];
int nboctets;
nboctets=recvfrom(s,tampon1,MAX_TAMPON-1,0,
(struct sockaddr *)&adresseClient,
&taille);
tampon1[nboctets]='\0';
sprintf(tampon2,"%s%s",PREFIXE,tampon1);
sendto(s,tampon2,strlen(tampon2),0,
(struct sockaddr *)&adresseClient,taille);
}
}