santaclause83
20-07-2007, 11:05
alloco spazio e inizializzo un char* msg con una stringa con questo formato:
"PIDdelprocesso CONNECT nomeutente"
per poi inviarla al server.
PROBLEMA: proprio all'inizio quando inizializzo la variabile msg,se controllo come è stata inizializzata con delle stampe su schermo vedo che la prima stampa mi dà il messaggio pulito così come deve essere,ma poche righe sotto se ristampo la stringa vedo che è stato aggiunto un carattere indecifrabile alla fine
la cosa strana è che tra le due stampe la variabile msg non è stata toccata,sotto il codice:
//-->creazione messaggio "PID CONNECT USER",msg occupa lo spazio di " connect user"+sizeof(int) del pid
if((msg = (char *)malloc(sizeof(char)*((strlen(argv[1])+strlen(" CONNECT ")+1))+sizeof(int)*1)) == NULL){
printf("malloc di msg fallita,terminazione client");
exit(1);
}
sprintf(msg,"%d",pid);
strncat(msg," CONNECT ",strlen(" CONNECT "));
strncat(msg,utente,strlen(utente));//adesso msg == "PID CONNECT USER"
printf("messaggio da inoltrare = %s;\n",msg);//stampa di controllo
//regolare
----->sotto alloco lo spazio per il nome della pipe per le comunicazioni con il server [SERVERCLIENTPID] e ristampo la variabile msg per controllare,vedo che è stata modificata
if((dir_letture = (char *)malloc(sizeof(char)*(strlen("serverclient")+1)+sizeof(int)*1)) == NULL){
printf("malloc per letture dal server fallita,terminazione client");
exit(1);
}
printf("messaggio da inoltrare = %s;\n",msg);//stampa di controllo con carattere
indecifrabile
STAMPE SU SHELL:
messaggio da inoltrare = 6652 CONNECT silvio;
messaggio da inoltrare = 6652 CONNECT silvio[carattereindecifrabile];
"PIDdelprocesso CONNECT nomeutente"
per poi inviarla al server.
PROBLEMA: proprio all'inizio quando inizializzo la variabile msg,se controllo come è stata inizializzata con delle stampe su schermo vedo che la prima stampa mi dà il messaggio pulito così come deve essere,ma poche righe sotto se ristampo la stringa vedo che è stato aggiunto un carattere indecifrabile alla fine
la cosa strana è che tra le due stampe la variabile msg non è stata toccata,sotto il codice:
//-->creazione messaggio "PID CONNECT USER",msg occupa lo spazio di " connect user"+sizeof(int) del pid
if((msg = (char *)malloc(sizeof(char)*((strlen(argv[1])+strlen(" CONNECT ")+1))+sizeof(int)*1)) == NULL){
printf("malloc di msg fallita,terminazione client");
exit(1);
}
sprintf(msg,"%d",pid);
strncat(msg," CONNECT ",strlen(" CONNECT "));
strncat(msg,utente,strlen(utente));//adesso msg == "PID CONNECT USER"
printf("messaggio da inoltrare = %s;\n",msg);//stampa di controllo
//regolare
----->sotto alloco lo spazio per il nome della pipe per le comunicazioni con il server [SERVERCLIENTPID] e ristampo la variabile msg per controllare,vedo che è stata modificata
if((dir_letture = (char *)malloc(sizeof(char)*(strlen("serverclient")+1)+sizeof(int)*1)) == NULL){
printf("malloc per letture dal server fallita,terminazione client");
exit(1);
}
printf("messaggio da inoltrare = %s;\n",msg);//stampa di controllo con carattere
indecifrabile
STAMPE SU SHELL:
messaggio da inoltrare = 6652 CONNECT silvio;
messaggio da inoltrare = 6652 CONNECT silvio[carattereindecifrabile];