2012-03-25 8 views
5

estoy usando fsockopen() para enviar datos a través de TCP a un host remoto:Detectar conexión abortar en una toma abierta por fsockopen()

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

¿Cómo puedo detectar después si la conexión se ha cerrado (con un FIN) o abortado (con un RST) por el host remoto?

+1

Enoquecedor, no se puede (AFAIK). Puede detectar si el socket se ha cerrado * o * abortado antes de su llamada 'fclose()' con 'feof()', pero no puede determinar cuál es. Aunque me pregunto qué tan útil sería esta información, después de todo, un socket muerto es un socket muerto, sin importar lo que le haya sucedido. – DaveRandom

Respuesta

1

De acuerdo con la documentación socket_last_error() y socket_send() puede ser útil para usted:

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

Creo, que PHP es capaz de detectar si la conexión se cerró, sin embargo, no está seguro acerca de esto.

Cuestiones relacionadas