2012-03-25 7 views
5

Sto usando fsockopen() per inviare i dati via TCP a un host remoto:Rileva l'interruzione della connessione su un socket aperto da fsockopen()

$s = fsockopen($host, $port); 
fwrite($s, $data); 
fclose($s); 

Come posso rilevare in seguito se la connessione è stata chiusa (con un FIN) o interrotto (con un RST) dall'host remoto?

+1

Fastidiosamente, non è possibile (AFAIK). È possibile rilevare se il socket è stato chiuso * o * interrotto prima della chiamata 'fclose()' con 'feof()', ma non è possibile determinare quale sia. Anche se mi chiedo quanto sia utile questa informazione, dopo tutto una presa morta è una presa morta, non importa cosa gli sia successo. – DaveRandom

risposta

1

In base alla documentazione socket_last_error() e socket_send() può essere utile per voi:

 
socket_send() returns the number of bytes sent, or FALSE on error. 
socket_last_error() returns the last error on the socket 

credo, che PHP è in grado di rilevare se la connessione è stata chiusa, tuttavia, non sicuro di questo.

Problemi correlati