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
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