readme + -h

This commit is contained in:
nbillard 2023-02-13 10:44:50 +01:00
parent 9e501096b5
commit 1ee178a63c
2 changed files with 36 additions and 27 deletions

View file

@ -1,29 +1,25 @@
# 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
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
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
```

View file

@ -25,13 +25,23 @@ void afficher_message(char *message, int lg, int num) {
}
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 i;
int c;
int i; // pour les boucles for
int c; // pour getopt
extern char *optarg;
extern int optind;
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");
while ((c = getopt(argc, argv, "pscertun:l:")) != -1) {
while ((c = getopt(argc, argv, "hpscertun:l:")) != -1) {
switch (c) {
case 'h':
usage();
return 0;
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 */
usage();
@ -182,7 +195,7 @@ int main (int argc, char **argv) {
if (nb_message == -1) {
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
if((sock=socket(AF_INET, SOCK_DGRAM,0)) == -1) {
@ -213,7 +226,7 @@ int main (int argc, char **argv) {
//envoi
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 ");
afficher_message(pmesg, lg_mesg, (i+1));
sendto(sock, pmesg, lg_mesg, 0,(struct sockaddr*)&adr_distant, lg_adr_dest);
@ -345,7 +358,7 @@ int main (int argc, char **argv) {
//envoi
for(i=0; i<nb_message; i++) {
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));
send(sock, pmesg, lg_mesg, 0);
}
@ -419,7 +432,7 @@ int main (int argc, char **argv) {
//envoi
for(i=0; i<nb_message; i++) {
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));
send(sock_bis, pmesg, lg_mesg, 0);
}