Сокеты, Address already in use

Olegaarh

Новичок
Сокеты, Address already in use

Привет всем.
Есть скрипт который ловит данные, переданные по протоколу UDP и выводит их на экран.
Когда во время работы скрипта в браузере нажимаю F5 выдается сообщение об ошибке - unable to bind address [48]: Address already in use. Хотя вроде и пользуюсь SO_REUSEADDR.
Если через некоторое время опять нажать F5 все снова работает.

Планирую использовать скрипт в качестве демона. И поэтому возникает вопрос, если кто-то наберет в строке браузера адрес по которому данный скрипт находится - то скрипт зависнет. Как сделать так чтобы скрипт не зависал?
Или надо поместить скрипт туда где нет доступа к нему через браузер? Но даст ли это гарантии что скрипт не зависнет? И можно ли сделать так чтобы при зависании скрипта он запускался заново?

Код скрипта
PHP:
<?php
set_time_limit(0);
ob_implicit_flush();

while (true)
{
        $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
		socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1) or die("Error");
        socket_bind($socket, "127.0.0.1",1721) or die("Error");
        socket_recvfrom($socket, $buf, 65535, 0, $clientIP, $clientPort);
        socket_set_nonblock($socket) or die("Error");
        echo $buf."<br/>";
        socket_shutdown($socket,2);
        socket_close($socket);
}

?>
 

Alexandre

PHPПенсионер
Планирую использовать скрипт в качестве демона.
можно поинтересоваться - зачем?

использование скрипта в качестве демоне не предполагает обращение к нему из браузера,
да и вообще его запуск из под WEB сервера.
 
Сверху