2012-05-14 13 views
8

Estoy obligado a mantener unos pocos sockets que abrí con PHP y verificar esos sockets a intervalos regulares. Soy nuevo en sockets en PHP; Abrí las tomas de la siguiente manera:¿Cómo saber si el socket está abierto en PHP?

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 
socket_connect($socket, $ip, $port); 

Algunos de los enchufes pueden entrar en un estado en el que no devuelven mensajes; estos enchufes solo reciben mensajes. ¿Cómo puedo saber si un socket está abierto si el socket no responde a un mensaje?

+0

Debe distinguir los receptáculos que están "abiertos", p. OS asigna recursos para esos descriptores y conectores que están "conectados" a otros sockets (por ejemplo, sockets de servidor en el host remoto). En este caso, la pregunta debería ser sobre "... si se abre una CONEXIÓN de socket ..." en mi opinión. – excanoe

Respuesta

2

socket_sendto - Envía un mensaje a una toma de corriente, si está conectado o no

Parece que usted podría utilizar socket_sendto y enviar algunos datos 'ping' al host remoto, a continuación, probar el regreso valor para determinar si el socket aún está establecido.

+0

¿Pudo resolverlo? –

+0

¿Qué tal un intento de no bloqueo para leer desde el socket? Eso debería volver en blanco o falso dependiendo de si está conectado o no. También generaré una Advertencia, creo, pero que se puede desactivar. – transilvlad

Cuestiones relacionadas