PROBLEMA [c] Write Che Non Scrive Su Socket Il Giusto Numero Di Byte

albe88

Nuovo Utente
1
0
Ciao ragazzi, sono nuovo e spero di aver scritto nella sezione giusta.

Ho scritto un'applicazione client server, quest'ultimo multithread. Entrambi comunicano tramite socket AF_UNIX, usando le direttive write e read. Il mio problema è il seguente: una volta instaurata la connessione, se il client esegue la write sullo stdout di un certo numero di byte non c'è nessun problema, vengono scritti tutti i byte. Diversamente, se la stessa write viene fatta sul fd della connessione appena stabilita, il numero di byte scritti non è quello atteso ma inferiore.
Questo problema non si presenta nel caso del server, che scrive il messaggio di risposta come ci si attende, e il client lo riceve perfettamente, in quanto la read legge tanti byte quanti sono quelli che ci si aspetta.
Sapete per caso dirmi qualcosa su questa anomalia? Non riesco a capire da cosa sia dovuta, visto che l'anomalia si presenta solo quando è il client a dover inviare un messaggio.

Dimenticavo: il client invia massimo 36544 byte, quindi se il messaggio che deve spedire ha una dimensione <= a questa, non esiste nessun problema.

Spero che qualcuno riesca ad aiutarmi, perchè non riesco a trovare una soluzione! Ringrazio in anticipo chiunque perderà tempo ad aiutarmi
smile.gif
 

Nico911

Utente Attivo
192
13
Non so dove possa risiedere l'errore e il perchè sul server ti va e sul client no senza il codice ma mi pare che la write al contrario della send ha la particolarità che può non inviati tutto il messaggio e questo non viene considerato un errore, devi di volta in volta controllare nel ritorno della funzione la quantità di byte inviati e nel caso sia inferiore alla dim del messaggio devi procedere a rinviare la porzione di messaggio non inviata.
 
Ultima modifica:

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili