Ajout BAL
This commit is contained in:
parent
09518ab972
commit
9b2e4aa4b3
8 changed files with 1041 additions and 904 deletions
71
bal.h
Normal file
71
bal.h
Normal file
|
@ -0,0 +1,71 @@
|
|||
//
|
||||
// Created by Béranger Quintana | 3AE E
|
||||
//
|
||||
|
||||
#ifndef PROGC_BAL_H
|
||||
#define PROGC_BAL_H
|
||||
//---------------------------------------------------
|
||||
//---------------Structure Liste---------------------
|
||||
//---------------------------------------------------
|
||||
|
||||
typedef struct BAL
|
||||
{
|
||||
int num_bal ;
|
||||
struct LETTRE* lfirst ;
|
||||
struct LETTRE* lcurrent ;
|
||||
struct LETTRE* llast ;
|
||||
struct BAL* suiv ;
|
||||
}BAL;
|
||||
|
||||
typedef struct LETTRE
|
||||
{
|
||||
int num;
|
||||
char* message ;
|
||||
struct LETTRE* suiv ;
|
||||
};
|
||||
|
||||
typedef struct LISTE {
|
||||
struct BAL * bal_premier ;
|
||||
struct BAL * bal_dernier ;
|
||||
struct BAL * bal_courant ;
|
||||
}LISTE_BAL;
|
||||
//---------------------------------------------------
|
||||
// GESTION BAL
|
||||
|
||||
LISTE_BAL* initialiser_bal(){
|
||||
|
||||
LISTE_BAL liste ;
|
||||
liste = (LISTE_BAL)malloc(sizeof(struct LISTE));
|
||||
liste->bal_premier = NULL;
|
||||
liste->bal_dernier = NULL;
|
||||
liste->bal_courant = NULL;
|
||||
return liste ;
|
||||
}
|
||||
|
||||
void ajouter_bal(int num, LISTE_BAL * liste){
|
||||
|
||||
BAL ma_bal = (BAL)malloc(sizeof(struct BAL));
|
||||
ma_bal->num_bal = num ;
|
||||
ma_bal->l_premier=NULL;
|
||||
ma_bal->l_dernier=NULL;
|
||||
ma_bal->l_courant=NULL;
|
||||
ma_bal->bal_suiv = NULL;
|
||||
|
||||
|
||||
if (liste == NULL)
|
||||
{
|
||||
liste->bal_premier = ma_bal ;
|
||||
liste->bal_dernier = ma_bal ;
|
||||
}
|
||||
else {
|
||||
liste->bal_dernier->bal_suiv = ma_bal ;
|
||||
liste->bal_dernier = ma_bal ;
|
||||
}
|
||||
liste->bal_courant = ma_bal ;
|
||||
}
|
||||
|
||||
|
||||
LISTE_BAL*
|
||||
|
||||
|
||||
#endif //PROGC_BAL_H
|
4
makefile
4
makefile
|
@ -1,3 +1,3 @@
|
|||
tsock: tsock_v3.c tsock.h
|
||||
gcc tsock_v3.c -o tsock_v3 -g
|
||||
tsock: tsock_p2.c tsock.h
|
||||
gcc tsock_p2.c -o tsock_p2 -g
|
||||
|
||||
|
|
BIN
tsock_p2
Normal file
BIN
tsock_p2
Normal file
Binary file not shown.
240
tsock_p2.c
Normal file
240
tsock_p2.c
Normal file
|
@ -0,0 +1,240 @@
|
|||
//--------------------------PROG C ET RESEAUX-----------------------
|
||||
//Nom : Quintana -----------------------------------------------
|
||||
//Prénom : Béranger -----------------------------------------------
|
||||
//Groupe : 3AE E -----------------------------------------------
|
||||
//------------------------------------------------------------------
|
||||
|
||||
|
||||
/* librairie standard ... */
|
||||
#include <stdlib.h>
|
||||
/* pour getopt */
|
||||
#include <unistd.h>
|
||||
/* déclaration des types de base */
|
||||
#include <sys/types.h>
|
||||
/* constantes relatives aux domaines, types et protocoles */
|
||||
#include <sys/socket.h>
|
||||
/* constantes et structures propres au domaine UNIX */
|
||||
#include <sys/un.h>
|
||||
/* constantes et structures propres au domaine INTERNET */
|
||||
#include <netinet/in.h>
|
||||
/* structures retournées par les fonctions de gestion de la base de
|
||||
données du réseau */
|
||||
#include <netdb.h>
|
||||
/* pour les entrées/sorties */
|
||||
#include <stdio.h>
|
||||
/* pour la gestion des erreurs */
|
||||
#include <errno.h>
|
||||
/* fonctions de tsock*/
|
||||
#include "tsock.h"
|
||||
/*fonctions de BAL*/
|
||||
#include "bal.h"
|
||||
/* pour afficher l'adresse d'un socket */
|
||||
#include <arpa/inet.h>
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
Programme Principal
|
||||
**********************************************************************/
|
||||
|
||||
void main (int argc, char **argv)
|
||||
{
|
||||
|
||||
//Déclarations
|
||||
|
||||
int c;
|
||||
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 */
|
||||
int source = -1 ; /* 0=puits, 1=source */
|
||||
int tcp=1; //tcp=1 => tcp ; tcp=0 =>udp
|
||||
struct hostent *hp;
|
||||
int bal=-1;
|
||||
int port = -1; //Numéro de port
|
||||
int recep=-1;
|
||||
port =htons(port);
|
||||
|
||||
char *dest ;
|
||||
int lg =30;
|
||||
|
||||
while ((c = getopt(argc, argv, "pn:sul:be:r:")) != -1)
|
||||
{
|
||||
|
||||
switch (c)
|
||||
{
|
||||
case 'p':
|
||||
if (source == 1)
|
||||
{
|
||||
printf("usage: cmd [-p|-s][-n ##]\n");
|
||||
exit(1);
|
||||
}
|
||||
source = 0;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
if (source == 0)
|
||||
{
|
||||
printf("usage: cmd [-p|-s][-n ##]\n");
|
||||
exit(1) ;
|
||||
}
|
||||
dest=argv[argc-2];
|
||||
source = 1;
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
nb_message = atoi(optarg);
|
||||
if (nb_message>100000)
|
||||
{
|
||||
printf("Trop d'envois, n> 100 000\n");
|
||||
exit (1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'u':
|
||||
tcp=0;
|
||||
break;
|
||||
|
||||
case 'l':
|
||||
lg = atoi(optarg);
|
||||
break;
|
||||
|
||||
case 'b' :
|
||||
bal=1;
|
||||
break;
|
||||
|
||||
case 'e' :
|
||||
if (recep==1)
|
||||
{
|
||||
printf("On ne peut pas être émetteur et récepteur, -r ou -e, pas les deux\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
bal=1;
|
||||
recep=0;
|
||||
|
||||
break;
|
||||
|
||||
case 'r' :
|
||||
if (recep==0)
|
||||
{
|
||||
printf("On ne peut être émetteur et récepteur en même temps : -e ou -r mais pas les deux\n");
|
||||
exit(1);
|
||||
}
|
||||
bal=1;
|
||||
recep=1;
|
||||
|
||||
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
printf("usage: cmd [-p|-s|-b|-e|-r][-n ##]\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ((port=atoi(argv[argc-1]))!=-1)
|
||||
{
|
||||
port=htons(port);
|
||||
}
|
||||
dest=argv[argc-2];
|
||||
|
||||
if (source == -1 & bal ==-1)
|
||||
{
|
||||
printf("usage: cmd [-p|-s][-n ##]\n");
|
||||
exit(1) ;
|
||||
}
|
||||
if (bal == -1)
|
||||
{
|
||||
if (source == 1)
|
||||
printf("SOURCE : ");
|
||||
else
|
||||
printf("PUITS : ");
|
||||
|
||||
|
||||
if (tcp==1)
|
||||
printf("Protocole de transport : TCP | ");
|
||||
|
||||
else
|
||||
printf("Protocole de transport : UDP | ");
|
||||
|
||||
if (nb_message == -1)
|
||||
{
|
||||
|
||||
if (source == 1)
|
||||
{
|
||||
nb_message = 10;
|
||||
printf("Nombre d'envois : %d | ", nb_message);
|
||||
}
|
||||
else
|
||||
printf("Nombre de receptions : infini | ");
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
if (source == 1)
|
||||
{
|
||||
|
||||
printf("Nombre d'envois = %d | ", nb_message);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("nb de tampons à recevoir = %d | ",nb_message);
|
||||
}
|
||||
}
|
||||
|
||||
printf("Destinataire : %s\n", dest);
|
||||
|
||||
|
||||
//Envoi de message, Source en UDP
|
||||
|
||||
int length_addr_dist;
|
||||
length_addr_dist=sizeof(struct sockaddr_in);
|
||||
|
||||
|
||||
if(source==1 & tcp==0)
|
||||
{
|
||||
envoi_UDP(port,nb_message,lg,dest);
|
||||
}
|
||||
|
||||
//PUITS de réception en UDP
|
||||
|
||||
else if (source==0 & tcp==0)
|
||||
{
|
||||
reception_UDP(port,nb_message,lg);
|
||||
}
|
||||
|
||||
|
||||
else if (source==0 & tcp==1)
|
||||
{
|
||||
|
||||
ServeurTCP(port, nb_message, lg);
|
||||
}
|
||||
|
||||
else if (source==1 & tcp==1)
|
||||
{
|
||||
|
||||
ClientTCP(port,nb_message,lg,dest);
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
if (bal==1 &recep==0)
|
||||
{
|
||||
printf("On fait un serveur BAL\n");
|
||||
}
|
||||
|
||||
else if (bal==1 & recep ==0)
|
||||
{
|
||||
printf("On est emetteur de lettres\n");
|
||||
}
|
||||
|
||||
else if(bal==1 &recep == 1)
|
||||
{
|
||||
printf("On récupère des lettres \n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
exit(0);
|
||||
}
|
175
tsock_v2.c
175
tsock_v2.c
|
@ -1,175 +0,0 @@
|
|||
//--------------------------PROG C ET RESEAUX-----------------------
|
||||
//Nom : Quintana -----------------------------------------------
|
||||
//Prénom : Béranger -----------------------------------------------
|
||||
//Groupe : 3AE E -----------------------------------------------
|
||||
//------------------------------------------------------------------
|
||||
|
||||
|
||||
/* librairie standard ... */
|
||||
#include <stdlib.h>
|
||||
/* pour getopt */
|
||||
#include <unistd.h>
|
||||
/* déclaration des types de base */
|
||||
#include <sys/types.h>
|
||||
/* constantes relatives aux domaines, types et protocoles */
|
||||
#include <sys/socket.h>
|
||||
/* constantes et structures propres au domaine UNIX */
|
||||
#include <sys/un.h>
|
||||
/* constantes et structures propres au domaine INTERNET */
|
||||
#include <netinet/in.h>
|
||||
/* structures retournées par les fonctions de gestion de la base de
|
||||
données du réseau */
|
||||
#include <netdb.h>
|
||||
/* pour les entrées/sorties */
|
||||
#include <stdio.h>
|
||||
/* pour la gestion des erreurs */
|
||||
#include <errno.h>
|
||||
/* fonctions de tsock*/
|
||||
#include "tsock.h"
|
||||
/* pour afficher l'adresse d'un socket */
|
||||
#include <arpa/inet.h>
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
Programme Principal
|
||||
**********************************************************************/
|
||||
|
||||
void main (int argc, char **argv)
|
||||
{
|
||||
|
||||
//Déclarations
|
||||
|
||||
int c;
|
||||
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 */
|
||||
int source = -1 ; /* 0=puits, 1=source */
|
||||
int tcp=1; //tcp=1 => tcp ; tcp=0 =>udp
|
||||
struct hostent *hp;
|
||||
|
||||
int port = -1; //Numéro de port
|
||||
port =htons(port);
|
||||
|
||||
char *dest ;
|
||||
int lg_local;
|
||||
|
||||
while ((c = getopt(argc, argv, "pn:su")) != -1) {
|
||||
|
||||
|
||||
switch (c) {
|
||||
case 'p':
|
||||
if (source == 1) {
|
||||
printf("usage: cmd [-p|-s][-n ##]\n");
|
||||
exit(1);
|
||||
}
|
||||
source = 0;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
if (source == 0) {
|
||||
printf("usage: cmd [-p|-s][-n ##]\n");
|
||||
exit(1) ;
|
||||
}
|
||||
dest=argv[argc-2];
|
||||
source = 1;
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
nb_message = atoi(optarg);
|
||||
break;
|
||||
|
||||
case 'u':
|
||||
if (tcp ==0){
|
||||
printf("usage : cmd [-p| -s] [-u][-n##]\n");
|
||||
}
|
||||
tcp=0;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("usage: cmd [-p|-s][-n ##]\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ((port=atoi(argv[argc-1]))!=-1)
|
||||
{
|
||||
port=htons(port);
|
||||
}
|
||||
dest=argv[argc-2];
|
||||
|
||||
|
||||
if (source == -1)
|
||||
{
|
||||
printf("usage: cmd [-p|-s][-n ##]\n");
|
||||
exit(1) ;
|
||||
}
|
||||
if (tcp==1)
|
||||
{
|
||||
printf("On utilise TCP\n");
|
||||
}
|
||||
else
|
||||
{printf("On utilise UDP\n");}
|
||||
|
||||
|
||||
if (source == 1)
|
||||
printf("on est dans le source\n");
|
||||
else
|
||||
printf("on est dans le puits\n");
|
||||
|
||||
|
||||
if (nb_message != -1)
|
||||
{
|
||||
if (source == 1)
|
||||
printf("nb de tampons à envoyer : %d\n", nb_message);
|
||||
else
|
||||
printf("nb de tampons à recevoir : %d\n", nb_message);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (source == 1)
|
||||
{
|
||||
nb_message = 10 ;
|
||||
printf("nb de tampons à envoyer = 10 par défaut\n");
|
||||
}
|
||||
else
|
||||
printf("nb de tampons à recevoir = infini\n");
|
||||
|
||||
}
|
||||
|
||||
|
||||
//Envoi de message, Source en UDP
|
||||
|
||||
int length_addr_dist;
|
||||
length_addr_dist=sizeof(struct sockaddr_in);
|
||||
|
||||
|
||||
|
||||
if(source==1 & tcp==0)
|
||||
{
|
||||
envoi_UDP(nb_message,port,30);
|
||||
}
|
||||
|
||||
//PUITS de réception en UDP
|
||||
|
||||
else if (source==0 & tcp==0)
|
||||
{
|
||||
reception_UDP(port,nb_message,30);
|
||||
}
|
||||
|
||||
|
||||
else if (source==0 & tcp==1)
|
||||
{
|
||||
printf("On utilise TCP en puits\n");
|
||||
ServeurTCP(port, nb_message, 30);
|
||||
}
|
||||
|
||||
else if (source==1 & tcp==1)
|
||||
{
|
||||
printf("On utilise TCP en source\n");
|
||||
ClientTCP(port,nb_message,30);
|
||||
}
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
BIN
tsock_v3
BIN
tsock_v3
Binary file not shown.
378
tsock_v3.c
378
tsock_v3.c
|
@ -1,189 +1,189 @@
|
|||
//--------------------------PROG C ET RESEAUX-----------------------
|
||||
//Nom : Quintana -----------------------------------------------
|
||||
//Prénom : Béranger -----------------------------------------------
|
||||
//Groupe : 3AE E -----------------------------------------------
|
||||
//------------------------------------------------------------------
|
||||
|
||||
|
||||
/* librairie standard ... */
|
||||
#include <stdlib.h>
|
||||
/* pour getopt */
|
||||
#include <unistd.h>
|
||||
/* déclaration des types de base */
|
||||
#include <sys/types.h>
|
||||
/* constantes relatives aux domaines, types et protocoles */
|
||||
#include <sys/socket.h>
|
||||
/* constantes et structures propres au domaine UNIX */
|
||||
#include <sys/un.h>
|
||||
/* constantes et structures propres au domaine INTERNET */
|
||||
#include <netinet/in.h>
|
||||
/* structures retournées par les fonctions de gestion de la base de
|
||||
données du réseau */
|
||||
#include <netdb.h>
|
||||
/* pour les entrées/sorties */
|
||||
#include <stdio.h>
|
||||
/* pour la gestion des erreurs */
|
||||
#include <errno.h>
|
||||
/* fonctions de tsock*/
|
||||
#include "tsock.h"
|
||||
/* pour afficher l'adresse d'un socket */
|
||||
#include <arpa/inet.h>
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
Programme Principal
|
||||
**********************************************************************/
|
||||
|
||||
void main (int argc, char **argv)
|
||||
{
|
||||
|
||||
//Déclarations
|
||||
|
||||
int c;
|
||||
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 */
|
||||
int source = -1 ; /* 0=puits, 1=source */
|
||||
int tcp=1; //tcp=1 => tcp ; tcp=0 =>udp
|
||||
struct hostent *hp;
|
||||
|
||||
int port = -1; //Numéro de port
|
||||
port =htons(port);
|
||||
|
||||
char *dest ;
|
||||
int lg =30;
|
||||
|
||||
while ((c = getopt(argc, argv, "pn:sul:")) != -1)
|
||||
{
|
||||
|
||||
switch (c)
|
||||
{
|
||||
case 'p':
|
||||
if (source == 1)
|
||||
{
|
||||
printf("usage: cmd [-p|-s][-n ##]\n");
|
||||
exit(1);
|
||||
}
|
||||
source = 0;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
if (source == 0)
|
||||
{
|
||||
printf("usage: cmd [-p|-s][-n ##]\n");
|
||||
exit(1) ;
|
||||
}
|
||||
dest=argv[argc-2];
|
||||
source = 1;
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
nb_message = atoi(optarg);
|
||||
if (nb_message>100000)
|
||||
{
|
||||
printf("Trop d'envois, n> 100 000\n");
|
||||
exit (1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'u':
|
||||
tcp=0;
|
||||
break;
|
||||
|
||||
case 'l':
|
||||
lg = atoi(optarg);
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("usage: cmd [-p|-s][-n ##]\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ((port=atoi(argv[argc-1]))!=-1)
|
||||
{
|
||||
port=htons(port);
|
||||
}
|
||||
dest=argv[argc-2];
|
||||
|
||||
if (source == -1)
|
||||
{
|
||||
printf("usage: cmd [-p|-s][-n ##]\n");
|
||||
exit(1) ;
|
||||
}
|
||||
|
||||
if (source == 1)
|
||||
printf("SOURCE : ");
|
||||
else
|
||||
printf("PUITS : ");
|
||||
|
||||
|
||||
if (tcp==1)
|
||||
printf("Protocole de transport : TCP | ");
|
||||
|
||||
else
|
||||
printf("Protocole de transport : UDP | ");
|
||||
|
||||
if (nb_message == -1)
|
||||
{
|
||||
|
||||
if (source == 1)
|
||||
{
|
||||
nb_message = 10;
|
||||
printf("Nombre d'envois : %d | ", nb_message);
|
||||
}
|
||||
else
|
||||
printf("Nombre de receptions : infini | ");
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
if (source == 1)
|
||||
{
|
||||
|
||||
printf("Nombre d'envois = %d | ", nb_message);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("nb de tampons à recevoir = %d | ",nb_message);
|
||||
}
|
||||
}
|
||||
|
||||
printf("Destinataire : %s\n", dest);
|
||||
|
||||
|
||||
//Envoi de message, Source en UDP
|
||||
|
||||
int length_addr_dist;
|
||||
length_addr_dist=sizeof(struct sockaddr_in);
|
||||
|
||||
|
||||
if(source==1 & tcp==0)
|
||||
{
|
||||
envoi_UDP(port,nb_message,lg,dest);
|
||||
}
|
||||
|
||||
//PUITS de réception en UDP
|
||||
|
||||
else if (source==0 & tcp==0)
|
||||
{
|
||||
reception_UDP(port,nb_message,lg);
|
||||
}
|
||||
|
||||
|
||||
else if (source==0 & tcp==1)
|
||||
{
|
||||
|
||||
ServeurTCP(port, nb_message, lg);
|
||||
}
|
||||
|
||||
else if (source==1 & tcp==1)
|
||||
{
|
||||
|
||||
ClientTCP(port,nb_message,lg,dest);
|
||||
}
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
//--------------------------PROG C ET RESEAUX-----------------------
|
||||
//Nom : Quintana -----------------------------------------------
|
||||
//Prénom : Béranger -----------------------------------------------
|
||||
//Groupe : 3AE E -----------------------------------------------
|
||||
//------------------------------------------------------------------
|
||||
|
||||
|
||||
/* librairie standard ... */
|
||||
#include <stdlib.h>
|
||||
/* pour getopt */
|
||||
#include <unistd.h>
|
||||
/* déclaration des types de base */
|
||||
#include <sys/types.h>
|
||||
/* constantes relatives aux domaines, types et protocoles */
|
||||
#include <sys/socket.h>
|
||||
/* constantes et structures propres au domaine UNIX */
|
||||
#include <sys/un.h>
|
||||
/* constantes et structures propres au domaine INTERNET */
|
||||
#include <netinet/in.h>
|
||||
/* structures retournées par les fonctions de gestion de la base de
|
||||
données du réseau */
|
||||
#include <netdb.h>
|
||||
/* pour les entrées/sorties */
|
||||
#include <stdio.h>
|
||||
/* pour la gestion des erreurs */
|
||||
#include <errno.h>
|
||||
/* fonctions de tsock*/
|
||||
#include "tsock.h"
|
||||
/* pour afficher l'adresse d'un socket */
|
||||
#include <arpa/inet.h>
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
Programme Principal
|
||||
**********************************************************************/
|
||||
|
||||
void main (int argc, char **argv)
|
||||
{
|
||||
|
||||
//Déclarations
|
||||
|
||||
int c;
|
||||
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 */
|
||||
int source = -1 ; /* 0=puits, 1=source */
|
||||
int tcp=1; //tcp=1 => tcp ; tcp=0 =>udp
|
||||
struct hostent *hp;
|
||||
|
||||
int port = -1; //Numéro de port
|
||||
port =htons(port);
|
||||
|
||||
char *dest ;
|
||||
int lg =30;
|
||||
|
||||
while ((c = getopt(argc, argv, "pn:sul:")) != -1)
|
||||
{
|
||||
|
||||
switch (c)
|
||||
{
|
||||
case 'p':
|
||||
if (source == 1)
|
||||
{
|
||||
printf("usage: cmd [-p|-s][-n ##]\n");
|
||||
exit(1);
|
||||
}
|
||||
source = 0;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
if (source == 0)
|
||||
{
|
||||
printf("usage: cmd [-p|-s][-n ##]\n");
|
||||
exit(1) ;
|
||||
}
|
||||
dest=argv[argc-2];
|
||||
source = 1;
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
nb_message = atoi(optarg);
|
||||
if (nb_message>100000)
|
||||
{
|
||||
printf("Trop d'envois, n> 100 000\n");
|
||||
exit (1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'u':
|
||||
tcp=0;
|
||||
break;
|
||||
|
||||
case 'l':
|
||||
lg = atoi(optarg);
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("usage: cmd [-p|-s][-n ##]\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ((port=atoi(argv[argc-1]))!=-1)
|
||||
{
|
||||
port=htons(port);
|
||||
}
|
||||
dest=argv[argc-2];
|
||||
|
||||
if (source == -1)
|
||||
{
|
||||
printf("usage: cmd [-p|-s][-n ##]\n");
|
||||
exit(1) ;
|
||||
}
|
||||
|
||||
if (source == 1)
|
||||
printf("SOURCE : ");
|
||||
else
|
||||
printf("PUITS : ");
|
||||
|
||||
|
||||
if (tcp==1)
|
||||
printf("Protocole de transport : TCP | ");
|
||||
|
||||
else
|
||||
printf("Protocole de transport : UDP | ");
|
||||
|
||||
if (nb_message == -1)
|
||||
{
|
||||
|
||||
if (source == 1)
|
||||
{
|
||||
nb_message = 10;
|
||||
printf("Nombre d'envois : %d | ", nb_message);
|
||||
}
|
||||
else
|
||||
printf("Nombre de receptions : infini | ");
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
if (source == 1)
|
||||
{
|
||||
|
||||
printf("Nombre d'envois = %d | ", nb_message);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("nb de tampons à recevoir = %d | ",nb_message);
|
||||
}
|
||||
}
|
||||
|
||||
printf("Destinataire : %s\n", dest);
|
||||
|
||||
|
||||
//Envoi de message, Source en UDP
|
||||
|
||||
int length_addr_dist;
|
||||
length_addr_dist=sizeof(struct sockaddr_in);
|
||||
|
||||
|
||||
if(source==1 & tcp==0)
|
||||
{
|
||||
envoi_UDP(port,nb_message,lg,dest);
|
||||
}
|
||||
|
||||
//PUITS de réception en UDP
|
||||
|
||||
else if (source==0 & tcp==0)
|
||||
{
|
||||
reception_UDP(port,nb_message,lg);
|
||||
}
|
||||
|
||||
|
||||
else if (source==0 & tcp==1)
|
||||
{
|
||||
|
||||
ServeurTCP(port, nb_message, lg);
|
||||
}
|
||||
|
||||
else if (source==1 & tcp==1)
|
||||
{
|
||||
|
||||
ClientTCP(port,nb_message,lg,dest);
|
||||
}
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue