Come posso leggere da un filehandle IO :: Socket :: INET solo se esiste una riga completa?
Domanda
Quando si legge da un IO :: Socket :: INET non si può presumere che ci saranno sempre dati disponibili sullo stream. Quali tecniche sono disponibili per sbirciare lo stream per verificare se i dati sono disponibili o quando si fa la lettura non prendere dati senza una terminazione di linea valida e passare immediatamente attraverso la lettura?
Soluzione
Imposta l'opzione Blocco
su 0
durante la creazione del socket:
$sock = IO::Socket::INET->new(Blocking => 0, ...);
Altri suggerimenti
Acquista IO :: selezionare ; è molto spesso quello che finisco per usare quando gestisco i socket in modo non bloccante.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow