readme + -h
This commit is contained in:
parent
9e501096b5
commit
1ee178a63c
2 changed files with 36 additions and 27 deletions
34
README.md
34
README.md
|
|
@ -1,29 +1,25 @@
|
||||||
# tsock_Abderrahman_Nathan
|
# tsock_Abderrahman_Nathan
|
||||||
|
|
||||||
implémentation de Tsock par Abderrahman et Nathan
|
implémentation de Tsock par Abderrahman El-Ouali et Nathan Billard
|
||||||
|
|
||||||
To compile
|
Pour compiler le programme
|
||||||
``` sh
|
``` sh
|
||||||
gcc -Wall tsock_v0.c
|
gcc -Wall tsock_v0.c -o nom_de_l_executable
|
||||||
```
|
```
|
||||||
|
|
||||||
To get the files
|
À l'issue du TP, nous avons terminé la version v4.
|
||||||
|
Cela inclut:
|
||||||
|
* comment gérer les paramètres données au programme
|
||||||
|
* gère la communication en mode UDP
|
||||||
|
* permet de déterminer le nombre de messages à envoyer ainsi que leur longeur
|
||||||
|
* permet de créer un serveur TCP qui recoit/envoye des messages des/au clients
|
||||||
|
* permet de créer un client TCP qui envoie/écoutes des messages au/de la part d'un serveur TCP
|
||||||
|
* permet au serveur TCP d'accepter plusieures connexions
|
||||||
|
* effectué avec 2 clients sur la même machine et 2 clients sur des machines différentes
|
||||||
|
|
||||||
|
Pour voir comment avec quels paramètres executer le programme, tapez
|
||||||
|
|
||||||
``` sh
|
``` sh
|
||||||
git clone https://git.etud.insa-toulouse.fr/nbillard/tsock_Abderrahman_Nathan.git
|
./nom_de_l_executable -h
|
||||||
```
|
```
|
||||||
|
|
||||||
download updates
|
|
||||||
``` sh
|
|
||||||
git pull
|
|
||||||
```
|
|
||||||
|
|
||||||
upload updates
|
|
||||||
git
|
|
||||||
``` sh
|
|
||||||
git add .
|
|
||||||
git commit -m "meaningfull message"
|
|
||||||
git push
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
29
tsock_v4.c
29
tsock_v4.c
|
|
@ -25,13 +25,23 @@ void afficher_message(char *message, int lg, int num) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void usage() {
|
void usage() {
|
||||||
printf("usage: cmd [-p|-s] [-c] [-e|-r] [-u|-t] [-n ##] [-l ##]\n");
|
printf("usage: cmd [-h] [-p|-s] [-c] [-e|-r] [-u|-t] [-n ##] [-l ##] <url_correspondant> <num_port> \n");
|
||||||
|
printf(" -h : help (prints this message)\n");
|
||||||
|
printf(" -p : puit (uniquement pour serveur en tcp)\n");
|
||||||
|
printf(" -s : source (uniquement pour serveur en tcp)\n");
|
||||||
|
printf(" -c : client (uniquement en tcp)\n");
|
||||||
|
printf(" -e : émetteur (uniquement si client tcp)\n");
|
||||||
|
printf(" -r : recepteur (uniquement si client tcp)\n");
|
||||||
|
printf(" -u : protocole UDP\n");
|
||||||
|
printf(" -t : protocole TCP\n");
|
||||||
|
printf(" -n ## : indique le nombre de messages à envoyer\n");
|
||||||
|
printf(" -l ## : longeur de chaqu'un des messages à envoyer\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int main (int argc, char **argv) {
|
int main (int argc, char **argv) {
|
||||||
int i;
|
int i; // pour les boucles for
|
||||||
int c;
|
int c; // pour getopt
|
||||||
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 */
|
||||||
|
|
@ -61,8 +71,11 @@ int main (int argc, char **argv) {
|
||||||
|
|
||||||
printf("début père\n");
|
printf("début père\n");
|
||||||
|
|
||||||
while ((c = getopt(argc, argv, "pscertun:l:")) != -1) {
|
while ((c = getopt(argc, argv, "hpscertun:l:")) != -1) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
|
case 'h':
|
||||||
|
usage();
|
||||||
|
return 0;
|
||||||
case 'c': /* Si on est en mode tcp, on devient client */
|
case 'c': /* Si on est en mode tcp, on devient client */
|
||||||
if (transport && ( source == 1 || source == 0) ) { /* on ne peut pas être client et serveur à la fois */
|
if (transport && ( source == 1 || source == 0) ) { /* on ne peut pas être client et serveur à la fois */
|
||||||
usage();
|
usage();
|
||||||
|
|
@ -182,7 +195,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, ntohs(port), nb_message, argv[argc-2]);
|
||||||
|
|
||||||
//création du socket local
|
//création du socket local
|
||||||
if((sock=socket(AF_INET, SOCK_DGRAM,0)) == -1) {
|
if((sock=socket(AF_INET, SOCK_DGRAM,0)) == -1) {
|
||||||
|
|
@ -213,7 +226,7 @@ int main (int argc, char **argv) {
|
||||||
|
|
||||||
//envoi
|
//envoi
|
||||||
for(i=0; i<nb_message; i++) {
|
for(i=0; i<nb_message; i++) {
|
||||||
construire_message(pmesg, (char)((i%26)+97), lg_mesg);
|
construire_message(pmesg, (char)((i%26)+'a'), lg_mesg);
|
||||||
printf("SOURCE: Envoi ");
|
printf("SOURCE: Envoi ");
|
||||||
afficher_message(pmesg, lg_mesg, (i+1));
|
afficher_message(pmesg, lg_mesg, (i+1));
|
||||||
sendto(sock, pmesg, lg_mesg, 0,(struct sockaddr*)&adr_distant, lg_adr_dest);
|
sendto(sock, pmesg, lg_mesg, 0,(struct sockaddr*)&adr_distant, lg_adr_dest);
|
||||||
|
|
@ -345,7 +358,7 @@ int main (int argc, char **argv) {
|
||||||
//envoi
|
//envoi
|
||||||
for(i=0; i<nb_message; i++) {
|
for(i=0; i<nb_message; i++) {
|
||||||
printf("SOURCE: Envoi ");
|
printf("SOURCE: Envoi ");
|
||||||
construire_message(pmesg, (char)((i%26)+97), lg_mesg);
|
construire_message(pmesg, (char)((i%26)+'a'), lg_mesg);
|
||||||
afficher_message(pmesg, lg_mesg, (i+1));
|
afficher_message(pmesg, lg_mesg, (i+1));
|
||||||
send(sock, pmesg, lg_mesg, 0);
|
send(sock, pmesg, lg_mesg, 0);
|
||||||
}
|
}
|
||||||
|
|
@ -419,7 +432,7 @@ int main (int argc, char **argv) {
|
||||||
//envoi
|
//envoi
|
||||||
for(i=0; i<nb_message; i++) {
|
for(i=0; i<nb_message; i++) {
|
||||||
printf("SOURCE: Envoi ");
|
printf("SOURCE: Envoi ");
|
||||||
construire_message(pmesg, (char)((i%26)+97), lg_mesg);
|
construire_message(pmesg, (char)((i%26)+'a'), lg_mesg);
|
||||||
afficher_message(pmesg, lg_mesg, (i+1));
|
afficher_message(pmesg, lg_mesg, (i+1));
|
||||||
send(sock_bis, pmesg, lg_mesg, 0);
|
send(sock_bis, pmesg, lg_mesg, 0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue