Come posso leggere da un filehandle IO :: Socket :: INET solo se esiste una riga completa?

StackOverflow https://stackoverflow.com/questions/315706

  •  11-07-2019
  •  | 
  •  

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?

È stato utile?

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