inversion de roles
This commit is contained in:
parent
b00322effb
commit
49d771cba9
1 changed files with 58 additions and 32 deletions
90
tsock_v4.c
90
tsock_v4.c
|
@ -34,9 +34,9 @@ int main (int argc, char **argv) {
|
||||||
int c;
|
int c;
|
||||||
extern char *optarg;
|
extern char *optarg;
|
||||||
extern int optind;
|
extern int optind;
|
||||||
int nb_message = -1; /* Nb de messages à envoyer ou à recevoir, par défaut : 10 en émission, infini en réception */
|
int nb_message = -1; /* Nb de messages à envoyer ou à recevoir, par défaut : 10 en émission, infini en réception */
|
||||||
int source = -1 ; /* 0=puits, 1=source */
|
int source = -1 ; /* 0=puits, 1=source */
|
||||||
int transport = -1 ; /* 0=UDP, 1=TCP <- par défaut*/
|
int transport = -1 ; /* 0=UDP, 1=TCP <- par défaut*/
|
||||||
int client = 0; /* 0=client, 1=serveur */
|
int client = 0; /* 0=client, 1=serveur */
|
||||||
int recepteur = -1; /* 0=éméteur, 1=recepteur (pour un client) */
|
int recepteur = -1; /* 0=éméteur, 1=recepteur (pour un client) */
|
||||||
|
|
||||||
|
@ -112,11 +112,11 @@ int main (int argc, char **argv) {
|
||||||
transport = 1;
|
transport = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'n': /* On choisit le nombre de messages à envoyer ou à lire. */
|
case 'n': /* On choisit le nombre de messages à envoyer ou à lire. */
|
||||||
nb_message = atoi(optarg);
|
nb_message = atoi(optarg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'l': /* On choisit la longueur des messages à envoyer ou la longueur maximale des messages à lire. */
|
case 'l': /* On choisit la longueur des messages à envoyer ou la longueur maximale des messages à lire. */
|
||||||
lg_mesg = atoi(optarg);
|
lg_mesg = atoi(optarg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -160,13 +160,14 @@ int main (int argc, char **argv) {
|
||||||
|
|
||||||
|
|
||||||
port = htons(port);
|
port = htons(port);
|
||||||
pmesg = malloc(sizeof(char)*lg_mesg);
|
|
||||||
|
|
||||||
if (port<5000){
|
if (port<5000){
|
||||||
printf("Le numéro de port doit être supérieur à 5000.\n");
|
printf("Le numéro de port doit être supérieur à 5000.\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pmesg = malloc(sizeof(char)*lg_mesg);
|
||||||
|
|
||||||
|
|
||||||
if (transport==0) { //protocole UDP
|
if (transport==0) { //protocole UDP
|
||||||
|
|
||||||
|
@ -175,7 +176,7 @@ int main (int argc, char **argv) {
|
||||||
|
|
||||||
|
|
||||||
if (nb_message == -1) {
|
if (nb_message == -1) {
|
||||||
nb_message = 10; // par défaut
|
nb_message = 10; // par défaut
|
||||||
}
|
}
|
||||||
printf("SOURCE : lg_mesg_emis=%d, port=%d, nb_envois=%d, TP=udp, dest=%s\n", lg_mesg, port, nb_message, argv[argc-2]);
|
printf("SOURCE : lg_mesg_emis=%d, port=%d, nb_envois=%d, TP=udp, dest=%s\n", lg_mesg, port, nb_message, argv[argc-2]);
|
||||||
|
|
||||||
|
@ -230,7 +231,7 @@ int main (int argc, char **argv) {
|
||||||
printf("PUITS : lg_mesg_lu=%d, port=%d, nb_receptions=%d, TP=udp\n", lg_mesg, port, nb_message);
|
printf("PUITS : lg_mesg_lu=%d, port=%d, nb_receptions=%d, TP=udp\n", lg_mesg, port, nb_message);
|
||||||
}
|
}
|
||||||
|
|
||||||
//création du socket
|
//création du socket
|
||||||
if((sock=socket(AF_INET, SOCK_DGRAM,0)) == -1) {
|
if((sock=socket(AF_INET, SOCK_DGRAM,0)) == -1) {
|
||||||
printf("echec de la creation du socket\n");
|
printf("echec de la creation du socket\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -280,7 +281,7 @@ int main (int argc, char **argv) {
|
||||||
else { //connexion TCP
|
else { //connexion TCP
|
||||||
|
|
||||||
//---------SOURCE---------//
|
//---------SOURCE---------//
|
||||||
if (source == 1) {
|
if (client == 1) {
|
||||||
|
|
||||||
if (nb_message ==-1) {
|
if (nb_message ==-1) {
|
||||||
nb_message = 10;
|
nb_message = 10;
|
||||||
|
@ -288,7 +289,7 @@ int main (int argc, char **argv) {
|
||||||
|
|
||||||
printf("SOURCE : lg_mesg_emis=%d, port=%d, nb_envois=%d, TP=tcp, dest=%s\n", lg_mesg, port, nb_message, argv[argc-2]);
|
printf("SOURCE : lg_mesg_emis=%d, port=%d, nb_envois=%d, TP=tcp, dest=%s\n", lg_mesg, port, nb_message, argv[argc-2]);
|
||||||
|
|
||||||
//création du socket local
|
//création du socket local
|
||||||
if((sock=socket(AF_INET, SOCK_STREAM,0)) == -1) {
|
if((sock=socket(AF_INET, SOCK_STREAM,0)) == -1) {
|
||||||
printf("échec de la creation du socket\n");
|
printf("échec de la creation du socket\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -319,17 +320,31 @@ int main (int argc, char **argv) {
|
||||||
|
|
||||||
printf("SOURCE: connect\n");
|
printf("SOURCE: connect\n");
|
||||||
|
|
||||||
if (lg_mesg<6){
|
if (recepteur == 1) {
|
||||||
printf("Erreur: la taille du buffer doit être >=6.\n");
|
lg_max=lg_mesg;
|
||||||
exit(1);
|
if (nb_message == -1) {
|
||||||
}
|
int count = 0;
|
||||||
|
while ((lg_mesg=recv(sock, pmesg, lg_max, 0))>0) {
|
||||||
//envoi
|
count++;
|
||||||
for(i=0; i<nb_message; i++) {
|
printf("PUITS: Reception ");
|
||||||
printf("SOURCE: Envoi ");
|
afficher_message(pmesg, lg_mesg, count);
|
||||||
construire_message(pmesg, (char)((i%26)+97), lg_mesg);
|
}
|
||||||
afficher_message(pmesg, lg_mesg, (i+1));
|
} else {
|
||||||
send(sock, pmesg, lg_mesg, 0);
|
for (int k=0; k<nb_message; k++) {
|
||||||
|
if ((lg_mesg=recv(sock, pmesg, lg_max, 0))>0) {
|
||||||
|
printf("PUITS: Reception ");
|
||||||
|
afficher_message(pmesg, lg_mesg, (k+1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//envoi
|
||||||
|
for(i=0; i<nb_message; i++) {
|
||||||
|
printf("SOURCE: Envoi ");
|
||||||
|
construire_message(pmesg, (char)((i%26)+97), lg_mesg);
|
||||||
|
afficher_message(pmesg, lg_mesg, (i+1));
|
||||||
|
send(sock, pmesg, lg_mesg, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (close(sock)==-1) {
|
if (close(sock)==-1) {
|
||||||
|
@ -350,7 +365,7 @@ int main (int argc, char **argv) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//création du socket
|
//création du socket
|
||||||
if((sock=socket(AF_INET, SOCK_STREAM,0)) == -1) {
|
if((sock=socket(AF_INET, SOCK_STREAM,0)) == -1) {
|
||||||
printf("echec de la creation du socket\n");
|
printf("echec de la creation du socket\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -384,20 +399,30 @@ int main (int argc, char **argv) {
|
||||||
|
|
||||||
printf("PUITS: connexion acceptée\n");
|
printf("PUITS: connexion acceptée\n");
|
||||||
|
|
||||||
//reception
|
if (source == 1) {
|
||||||
lg_max=lg_mesg;
|
//envoi
|
||||||
if (nb_message == -1) {
|
for(i=0; i<nb_message; i++) {
|
||||||
int count = 0;
|
printf("SOURCE: Envoi ");
|
||||||
while ((lg_mesg=recv(sock_bis, pmesg, lg_max, 0))>0) {
|
construire_message(pmesg, (char)((i%26)+97), lg_mesg);
|
||||||
count++;
|
afficher_message(pmesg, lg_mesg, (i+1));
|
||||||
printf("PUITS: Reception ");
|
send(sock_bis, pmesg, lg_mesg, 0);
|
||||||
afficher_message(pmesg, lg_mesg, count);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (int k=0; k<nb_message; k++) {
|
//reception
|
||||||
if ((lg_mesg=recv(sock_bis, pmesg, lg_max, 0))>0) {
|
lg_max=lg_mesg;
|
||||||
|
if (nb_message == -1) {
|
||||||
|
int count = 0;
|
||||||
|
while ((lg_mesg=recv(sock_bis, pmesg, lg_max, 0))>0) {
|
||||||
|
count++;
|
||||||
printf("PUITS: Reception ");
|
printf("PUITS: Reception ");
|
||||||
afficher_message(pmesg, lg_mesg, (k+1));
|
afficher_message(pmesg, lg_mesg, count);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (int k=0; k<nb_message; k++) {
|
||||||
|
if ((lg_mesg=recv(sock_bis, pmesg, lg_max, 0))>0) {
|
||||||
|
printf("PUITS: Reception ");
|
||||||
|
afficher_message(pmesg, lg_mesg, (k+1));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -410,4 +435,5 @@ int main (int argc, char **argv) {
|
||||||
printf("PUITS: fin\n");
|
printf("PUITS: fin\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
free(pmesg);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue