-
void check_args_src(int argc, char** argv)
- Vérifie la validité des arguments et quitte en affichant un message d'erreur sur
stderr
si ils sont invalides.
- Vérifie la validité des arguments et quitte en affichant un message d'erreur sur
-
int negociation_src(struct sockaddr_in* serveur, int* mode, fenetre* fen)
- PRE
serveur
initialisé - mode == 1 : stop and wait
- mode == 2 : go back n
- Négocie l'ouverture d'une communication avec un serveur
- Initialise la fenêtre de congestion à partir du serveur
- RETURN Undefinded
- POST
tailleFenetre == NULL si mode == 1, > 0 sinon
- NOTE Termine le programme en cas d'erreur
- PRE
-
int go_back_n(struct sockaddr_in* addrDst, int sockSrc, fenetre* fen)
- PRE
addrDst != NULL
- PRE
sockSrc >= 0
- Crée et envoie des paquets avec le protocole go back n puis termine la communication.
- POST
close(sockSrc)
- PRE
-
int stop_and_wait(struct sockaddr_in* addrDst, int sockSrc)
- PRE
addrDst != NULL
- PRE
sockSrc >= 0
- Crée et envoie des paquets avec le protocole stop and wait puis termine la communication.
- POST
close(sockSrc)
- PRE
-
void fin_communication_src(struct sockaddr_in* serveur)
- PRE
serveur
initialisé - Signale une fin de communication à la destination et attend sa réponse.
- NOTE Termine le programme en cas d'erreur
- PRE
-
void check_args_dst(int argc, char** argv)
- Vérifie la validité des arguments et quitte en affichant un message d'erreur sur
stderr
si ils sont invalides.
- Vérifie la validité des arguments et quitte en affichant un message d'erreur sur
-
int negociation_dst(struct sockaddr_in* client, fenetre* fenetre, int* mode)
- PRE
client
initialisé - Négocie l'ouverture d'une communication avec un client.
- Initialise la fenêtre de congestion du client avec les memes proprietes que
fenetre
- RETURN Undefinded
- NOTE Si
*tailleFenetre == 0
alors le mode de communication sera en stop and wait. - NOTE Termine le programme en cas d'erreur
- PRE
-
void stop_and_wait_ecoute(struct sockaddr_in* client)
- PRE
client
initialisé - Gère la réception des paquets et l'envoi d'acquittements en mode stop and wait
- NOTE Termine le programme en cas d'erreur
- PRE
-
void go_back_n_ecoute(struct sockaddr_in* client, int tailleFenetre)
- PRE
client
initialisé - Gère la réception des paquets et l'envoi d'acquittements en mode go back n
- NOTE Termine le programme en cas d'erreur
- PRE
-
void fin_communication_dst(struct sockaddr_in* client)
- PRE
client
initialisé - Signale une fin de communication à la source.
- NOTE Termine le programme en cas d'erreur
- PRE
#define SYN (1<<0)
#define FIN (1<<1)
#define RST (1<<2)
#define ACK (1<<4)
#define STOP_N_WAIT 1
#define GO_BACK_N 2
#define TAILLE_PAQUET 52
typedef struct paquet
{ //utiliser _uint ? ==> mieux représenter l'intention.
unsigned char idFlux;
unsigned char type;
unsigned short numSeq;
unsigned short numAck;
unsigned char ecn;
unsigned char tailleFenetre; //en nombre d'octets
unsigned char donnees[44];
} paquet;
typedef struct fenetre
{
unsigned int debut;
unsigned int fin;
} fenetre;
-
void init_addr(struct sockaddr_in* addr, char* ip, char* port)
- PRE
addr != NULL
- PRE ip doit être une IPv4 valide (n.n.n.n) ou NULL
- PRE
2048 < port < 49151
- Initialise la structure
addr
par mutation avec les arguments. - POST
addr.sin_addr = INADDR_ANY si ip == NULL
- PRE
-
int ipv4_valide(char* ip)
- Vérifie si
ip
est une IPv4 valide - RETURN 1 en cas de réussite, 0 sinon
- Vérifie si
- paquet cree_paquet(unsigned char idFlux, unsigned char type, unsigned short numSeq, unsigned short numAck, unsigned char ecn, unsigned char tailleFenetre, unsigned char* donnees)
- Crée, initialise un paquet et le renvoie.
- RETURN Le paquet initialisé.
-
void modif_taille_fenetre(fenetre* fen, unsigned int debut, unsigned int fin)
- PRE
debut > 0
- PRE
fin > debut
- Initialise la structure
fen
par mutation avec les arguments. - NOTE
debut
etfin
sont donnés en nombre de paquets au lieu de nombre d'octets.
- PRE
-
int taille_fenetre(fenetre* fen)
- RETURN La taille de
fen
- RETURN La taille de
- void tue_moi(char* msg, int fdc, ...)
- Ferme
fdc
descrpiteurs, affichemsg
surstderr
puis termine le programme.
- Ferme