Hola, tengo un Script en un servidor Linux que abre un
socket en una IP y puerto determinados. He hecho un cliente TCP en Windows que envía paquetes al servidor, hasta ahí todo funciona correctamente. El problema viene cuando el contenido del paquete está vacío. El servidor no desconecta el cliente ya que se queda esperando el contenido del paquete, sin caducidad... En este Loop se procesan las peticiones:
Código:
while (true){
$client = socket_accept($sock);
//Aquí se detiene la ejecución ya que se queda esperando al contenido del
//paquete deja abierta la conexión con el cliente permanentemente
$input = socket_read($client, 1024) or die("Cannot read from socket");
save_data($input);
socket_write($client, $input);
socket_close($client);
}
Cómo puedo establecer un tiempo de caducidad para "socket_read" ?
PD: He probado con el siguiente código, pero me da fallo...
Código:
$timeout = array('sec'=>1,'usec'=>500000);
socket_set_option($client,SOL_SOCKET,SO_RCVTIMEO,$timeout);