client : nombre de paquets émis

code/loc-bts/client :
* Affinement de la gestion du nombre de paquets envoyés et du délai
  entre envois de paquets, dans le cas de la demande de localisation et
  dans le cas de la requête de calibration.
* Makefile : Ajout d'une cible de compilation statique, afin d'obtenir
  un binaire autonome à copier sur les clients.

code/librtaputil/Makefile :
* Ajout d'un lien symbolique vers la version numérotée de la
  bibliothèque, dans la cible "install-dynamic".

code/GuiNuMo-server/test.bash :
* Suppression de ce fichier obsolète.

git-svn-id: https://pif.pu-pm.univ-fcomte.fr/svn/loc@44 785a6c6c-259e-4ff1-8b91-dc31627914f0
This commit is contained in:
Matteo Cypriani 2008-06-17 13:23:03 +00:00
parent cc1222f67f
commit 7a938066a0
4 changed files with 46 additions and 30 deletions

View File

@ -1,3 +0,0 @@
#!/bin/bash
./test 1060-scan.csv 1080-scan.csv 1100-scan.csv 1070-scan.csv 1090-scan.csv couloir-scan.csv

View File

@ -14,6 +14,7 @@ RANLIB = ranlib
# Commandes d'installation et de désinstallation # Commandes d'installation et de désinstallation
RM=rm -fv RM=rm -fv
CP=cp -v CP=cp -v
SYMLINK=ln -svf
# Variables générales # Variables générales
LIB_CIBLE=librtaputil LIB_CIBLE=librtaputil
@ -36,6 +37,7 @@ XCFLAGS=$(CFLAGS) $(DEPFLAGS) $(WARN) $(HEADERS)
PICFLAG=-fPIC PICFLAG=-fPIC
LIBS=-liw LIBS=-liw
#STRIPFLAGS= -Wl,-s #STRIPFLAGS= -Wl,-s
#LDFLAGS=
## Cibles de compilation standard ## ## Cibles de compilation standard ##
@ -72,6 +74,7 @@ install-dynamic : install-header $(DYNAMIC)
@$(CP) $(DYNAMIC) $(INSTALL_LIB) &&\ @$(CP) $(DYNAMIC) $(INSTALL_LIB) &&\
chmod 644 $(INSTALL_LIB)/$(DYNAMIC) &&\ chmod 644 $(INSTALL_LIB)/$(DYNAMIC) &&\
chown root:root $(INSTALL_LIB)/$(DYNAMIC) &&\ chown root:root $(INSTALL_LIB)/$(DYNAMIC) &&\
cd $(INSTALL_LIB) && $(SYMLINK) $(DYNAMIC) $(LIB_CIBLE).so &&\
echo -e "\n!!! Installation de la bibliothèque dynamique effectuée avec succès.\n!!! Ajoutez une ligne « $(INSTALL_LIB) » dans le fichier /etc/ld.so.conf\n ou dans un nouveau fichier de /etc/ld.so.conf.d/, si ce n'est déjà fait.\n!!! Exécutez ldconfig ensuite.\n" echo -e "\n!!! Installation de la bibliothèque dynamique effectuée avec succès.\n!!! Ajoutez une ligne « $(INSTALL_LIB) » dans le fichier /etc/ld.so.conf\n ou dans un nouveau fichier de /etc/ld.so.conf.d/, si ce n'est déjà fait.\n!!! Exécutez ldconfig ensuite.\n"
install-static : install-header $(STATIC) install-static : install-header $(STATIC)
@ -90,7 +93,7 @@ install-header : $(HEADER)
uninstall : uninstall-dynamic uninstall-static uninstall : uninstall-dynamic uninstall-static
uninstall-dynamic : uninstall-header uninstall-dynamic : uninstall-header
@$(RM) $(INSTALL_LIB)/$(DYNAMIC) @$(RM) $(INSTALL_LIB)/$(DYNAMIC) $(INSTALL_LIB)/$(LIB_CIBLE).so
ldconfig ldconfig
uninstall-static : uninstall-header uninstall-static : uninstall-header

View File

@ -21,7 +21,8 @@ CFLAGS=-O2 -W -Wall -Wstrict-prototypes -O -I.
DEPFLAGS=-MMD DEPFLAGS=-MMD
XCFLAGS=$(CFLAGS) $(DEPFLAGS) $(WARN) $(HEADERS) XCFLAGS=$(CFLAGS) $(DEPFLAGS) $(WARN) $(HEADERS)
PICFLAG=-fPIC PICFLAG=-fPIC
LIBS=../../librtaputil/librtaputil.so.1.0 LIBS=-lrtaputil
STATIC_LIBS=-liw -lm
## Cibles de compilation standard ## ## Cibles de compilation standard ##
@ -29,6 +30,7 @@ LIBS=../../librtaputil/librtaputil.so.1.0
.PHONY : all install uninstall clean purge help .PHONY : all install uninstall clean purge help
all : $(TARGET) all : $(TARGET)
static : $(TARGET).static
% : %.o % : %.o
$(CC) $(LDFLAGS) $(STRIPFLAGS) $(XCFLAGS) -o $@ $^ $(LIBS) $(CC) $(LDFLAGS) $(STRIPFLAGS) $(XCFLAGS) -o $@ $^ $(LIBS)
@ -38,6 +40,9 @@ all : $(TARGET)
# Compilation du programme # Compilation du programme
$(TARGET) : $(TARGET).o $(HEADER) $(TARGET) : $(TARGET).o $(HEADER)
$(TARGET).static : $(TARGET).c $(HEADER)
$(CC) $(LDFLAGS) -static $(STRIPFLAGS) $(XCFLAGS) -o $@ $^ $(LIBS) $(STATIC_LIBS)
## Installation / désinstallation ## ## Installation / désinstallation ##
@ -45,8 +50,12 @@ install : $(TARGET)
@$(CP) $(TARGET) $(INSTALL_DIR) @$(CP) $(TARGET) $(INSTALL_DIR)
@cd $(INSTALL_DIR) ; chown root:root $(TARGET) ; chmod 755 $(TARGET) @cd $(INSTALL_DIR) ; chown root:root $(TARGET) ; chmod 755 $(TARGET)
install-static : $(TARGET).static
@$(CP) $(TARGET).static $(INSTALL_DIR)
@cd $(INSTALL_DIR) ; chown root:root $(TARGET).static ; chmod 755 $(TARGET).static
uninstall : uninstall :
@$(RM) $(INSTALL_DIR)/$(TARGET) @$(RM) $(INSTALL_DIR)/{$(TARGET),$(TARGET).static}
## Nettoyage ## ## Nettoyage ##
@ -55,7 +64,7 @@ clean :
@$(RM) -fv *~ *.o *.d @$(RM) -fv *~ *.o *.d
purge : clean purge : clean
@$(RM) -fv $(TARGET) @$(RM) -fv $(TARGET) $(TARGET).static
## Aide ## ## Aide ##

View File

@ -18,6 +18,11 @@
/* Nombre de paquets envoyés */ /* Nombre de paquets envoyés */
#define NBPKT_CALIB 20 // Rafale de 20 paquets lors de la calibration #define NBPKT_CALIB 20 // Rafale de 20 paquets lors de la calibration
#define NBPKT_NORMAL 10 // Nombre de paquets envoyés dans le cas d'une demande de localisation
/* Délai entre chaque paquet envoyé */
#define DELAY_CALIB 50000 // Délai entre chaque émission de paquet lors de la calibration (en ms)
#define DELAY_NORMAL 25000 // Délai entre chaque émission de paquet dans le cas d'une demande de localisation (en ms)
@ -45,6 +50,9 @@ int main(int argc, char *argv[])
ssize_t nsent ; // Retour de sendto ssize_t nsent ; // Retour de sendto
char iface[IFNAMSIZ + 1] = "" ; // Interface réseau depuis laquelle on envoit le paquet char iface[IFNAMSIZ + 1] = "" ; // Interface réseau depuis laquelle on envoit le paquet
int i ; // Compteur
int delay = (argc == ARGC_NORMAL ? DELAY_NORMAL : DELAY_CALIB) ; // Temps d'attente entre chaque émission de paquet
/* Test du nombre d'arguments */ /* Test du nombre d'arguments */
if (argc == ARGC_NORMAL + 1 || argc == ARGC_CALIB + 1) // Si on a spécifié un nom d'interface if (argc == ARGC_NORMAL + 1 || argc == ARGC_CALIB + 1) // Si on a spécifié un nom d'interface
@ -84,7 +92,7 @@ int main(int argc, char *argv[])
/* Création du paquet à envoyer */ /* Création du paquet à envoyer */
gettimeofday(&request_time, NULL) ; gettimeofday(&request_time, NULL) ;
if(argc == ARGC_NORMAL) // Paquet normal if (argc == ARGC_NORMAL) // Paquet normal
{ {
printf("Envoi normal effectué à : %llu\n", timeval_to_ms(request_time)) ; printf("Envoi normal effectué à : %llu\n", timeval_to_ms(request_time)) ;
buf_size = sizeof(char) + sizeof(struct timeval) ; buf_size = sizeof(char) + sizeof(struct timeval) ;
@ -93,7 +101,7 @@ int main(int argc, char *argv[])
memcpy(&buf[1], &request_time, sizeof(request_time)) ; memcpy(&buf[1], &request_time, sizeof(request_time)) ;
} }
else if(argc == ARGC_CALIB) // Paquet calibration else // Paquet calibration
{ {
printf("Envoi Calibration effectué à : %llu\n", timeval_to_ms(request_time)) ; printf("Envoi Calibration effectué à : %llu\n", timeval_to_ms(request_time)) ;
@ -120,35 +128,34 @@ int main(int argc, char *argv[])
/* Envoi des infos au serveur d'aggrégation */ /* Envoi des infos au serveur d'aggrégation */
nsent = sendto(sockfd, (void *) buf, buf_size, 0, (struct sockaddr *) &server, (socklen_t) sizeof(server)) ; nsent = sendto(sockfd, (void *) buf, buf_size, 0, (struct sockaddr *) &server, (socklen_t) sizeof(server)) ; // Envoi d'un paquet.
#ifdef DEBUG
printf("Paquets envoyés : .") ;
#endif
if (nsent != (ssize_t) buf_size) if (nsent != (ssize_t) buf_size)
{ {
perror("Erreur lors de l'envoi des infos au serveur ") ; perror("Erreur lors de l'envoi des informations au serveur ") ;
return ERR_SENDING_INFO ; return ERR_SENDING_INFO ;
} }
if (argc == ARGC_CALIB) // Dans le cas d'un paquet de calibration, on envoit une rafale de NBPKT_CALIB paquets?
{
int i ;
for (i = 0 ; i < NBPKT_CALIB - 1 ; i++)
{
usleep(50000) ; // On attend 50 ms entre chaque paquet.
nsent = sendto(sockfd, (void *) buf, buf_size, 0, (struct sockaddr *) &server, (socklen_t) sizeof(server)) ;
#ifdef DEBUG #ifdef DEBUG
putchar('.') ; printf("Paquets envoyés : .") ;
fflush(stdout) ; fflush(stdout) ;
#endif #endif
if (nsent != (ssize_t) buf_size)
{ for (i = 0 ; i < (argc == ARGC_NORMAL ? NBPKT_NORMAL : NBPKT_CALIB) - 1 ; i++) // Si tels sont les paramètres, on envoit éventuellement la suite de la rafale de paquets :
perror("Erreur lors de l'envoi des infos au serveur ") ; {
return ERR_SENDING_INFO ; usleep(delay) ; // On attend le temps voulu entre chaque paquet.
}
nsent = sendto(sockfd, (void *) buf, buf_size, 0, (struct sockaddr *) &server, (socklen_t) sizeof(server)) ;
if (nsent != (ssize_t) buf_size)
{
perror("Erreur lors de l'envoi des infos au serveur ") ;
return ERR_SENDING_INFO ;
} }
#ifdef DEBUG
putchar('.') ;
fflush(stdout) ;
#endif
} }
#ifdef DEBUG #ifdef DEBUG
putchar('\n') ; putchar('\n') ;
#endif #endif