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
codice:
char *test ="ciaooo";
int size= invio_msg(tcp_sk , test , sizeof(char) * strlen(test));
printf("Valori scritti: %d\n" , size);
Parte server, legge quello che ha inviato il client
codice:
int size = read_msg(new_sk ,buff , 100);
Funzioni di supporto per invio e lettura
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;
}
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.
Grazie e scusatemi