clockover
13-06-2010, 12:51
Includo questi due spezzoni di codice
Proceso Server
bzero(buffer, MAX_BUFFER);
//lettura della richiesta
letti = read(sock_ds, buffer, MAX_BUFFER);
if(letti == -1){
bzero(buffer, MAX_BUFFER);
sprintf(buffer, "Errore di lettura da client %s", ip);
perror(buffer);
free((void*)buffer);
exit(-1);
}
//conterrà il comando da eseguire
char command = request(buffer);
//solo per il debugging
printf("Letto %d\n", command);
if(write(sock_ds, &command, sizeof(char)) == -1){
bzero(buffer, MAX_BUFFER);
sprintf(buffer, "Errore invio messaggio a %s", ip);
perror(buffer);
free((void*)buffer);
exit(-1);
}
Processo client
bzero(buffer, MAX_BUFFER);
printf("Inserisci richiesta: ");
fgets(buffer, MAX_BUFFER, stdin);
if(write(sock_ds, buffer, strlen(buffer)) == -1){
perror("Errore invio richiesta al server");
free((char*)buffer);
return FAIL;
}
if(read(sock_ds, &t, sizeof(char)) == -1){
perror("Errore lettura da server");
free((char*)buffer);
return FAIL;
}
printf("Ho letto %d\n", t);
funziona così
1)client inserisce un comando
2)lo invia al server
3)il server controlla e l'intero che ritorna è salvato nella variabile command (un char, il cui valore lo controllo subito visivamente con la printf e li non ci sono problemi)
4)lo invio al client
5)il client recepisce valori strani
Mi sono perso qualcosa per strada?
Proceso Server
bzero(buffer, MAX_BUFFER);
//lettura della richiesta
letti = read(sock_ds, buffer, MAX_BUFFER);
if(letti == -1){
bzero(buffer, MAX_BUFFER);
sprintf(buffer, "Errore di lettura da client %s", ip);
perror(buffer);
free((void*)buffer);
exit(-1);
}
//conterrà il comando da eseguire
char command = request(buffer);
//solo per il debugging
printf("Letto %d\n", command);
if(write(sock_ds, &command, sizeof(char)) == -1){
bzero(buffer, MAX_BUFFER);
sprintf(buffer, "Errore invio messaggio a %s", ip);
perror(buffer);
free((void*)buffer);
exit(-1);
}
Processo client
bzero(buffer, MAX_BUFFER);
printf("Inserisci richiesta: ");
fgets(buffer, MAX_BUFFER, stdin);
if(write(sock_ds, buffer, strlen(buffer)) == -1){
perror("Errore invio richiesta al server");
free((char*)buffer);
return FAIL;
}
if(read(sock_ds, &t, sizeof(char)) == -1){
perror("Errore lettura da server");
free((char*)buffer);
return FAIL;
}
printf("Ho letto %d\n", t);
funziona così
1)client inserisce un comando
2)lo invia al server
3)il server controlla e l'intero che ritorna è salvato nella variabile command (un char, il cui valore lo controllo subito visivamente con la printf e li non ci sono problemi)
4)lo invio al client
5)il client recepisce valori strani
Mi sono perso qualcosa per strada?