Ajout BAL

This commit is contained in:
BQUINTAN 2020-04-22 10:51:04 +02:00
parent 09518ab972
commit 9b2e4aa4b3
8 changed files with 1041 additions and 904 deletions

71
bal.h Normal file
View 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

View file

@ -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

1077
tsock.h

File diff suppressed because it is too large Load diff

BIN
tsock_p2 Normal file

Binary file not shown.

240
tsock_p2.c Normal file
View 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);
}

View file

@ -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

Binary file not shown.

View file

@ -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);
}