Buon giorno!
utilizzando i socket e NetStream per costruire una richiesta http,
( quindi utilizzando byte[] per ricevere i dati i modo da non aver problemi di encoding con immagini o altro )
scopro che i server google ( o poi ne ho visti altri ) non riempiono del tutto il buffer e il socket rimane in attesa per un tempo ingiustificatamente lungo
codice:
byte[] buffer = new byte[1024]; //1024=1Kb
do{
ActByteReceived=Net.Read(buffer, 0, buffer.Length);
file.Write(buffer,0,ActByteReceived); //save on a file the data received
}while(ActByteReceived!=0);
succede quanto segue
1. il serverweb riempie tutto il buffer del client ( 1024 byte )
2. il serverweb riempie tutto il buffer del client ( 1024 byte )
... dopo un po, ad esempio dopo 50 cicli
50. il serverweb NON riempie tutto il buffer del client ( 98 byte ) ( ma ci saranno ancora dati che arriveranno )
<< C# si congela per un tempo lunghissimo >>
51. il serverweb riempie tutto il buffer del client ( 1024 byte )
come posso fare in modo che non ci impieghi 5 minuti a leggere una banale pagina di google ?