Ciao a tutti, riprendendo in mano un po' di codice sui socket mi e' sopraggiunto un problema con la funzione read.
Lasciando stare tutta la parte di connessione riporto solo le funzioni di invio e ricezione del messaggio lungo un descrittore.
Parte client
Parte server, legge quello che ha inviato il clientcodice:char *test ="ciaooo"; int size= invio_msg(tcp_sk , test , sizeof(char) * strlen(test)); printf("Valori scritti: %d\n" , size);
Funzioni di supporto per invio e letturacodice:int size = read_msg(new_sk ,buff , 100);
La funzione read dovrebbe leggere fino a quando non incontra il carattere di escape \0?Oppure sbaglio io da qualche parte?Perche' mi rimane bloccato nella funzione di read_msg e non riesco a venirne fuori.codice:int invio_msg(int desc , char * msg , int size){ int byte ; int valore = 0; while(size > 0){ if((byte=write(desc , msg , size )) < 0){ if(errno == EINTR){ printf("Errore nell'invio dei dati\n"); continue ; }else{ printf("Errore nell'invio\n"); return -1; } } valore += byte; size -= byte ; msg += byte ; }//while return byte; } int read_msg(int sd ,char * msg , int max_size ){ int value , byte; int size=0; value = max_size; while(value > 0 ){ if((byte=read(sd , msg , max_size - 1)) < 0 ){ if(errno == EINTR){ continue; }else{ return -1; } }else{ if( byte == 0){ break ; } } msg += (byte * sizeof(char)); value -= byte; size += byte ; } return size; }
Grazie e scusatemi![]()

Rispondi quotando