Ho un codice che ho tradotto da c++ in Windows.
In c++ funziona in php invece funziona solo la prima volta.
Poi se voglio farlo rifunzionare devo chiudere l'applicazione che riceve
i dati e riavviarla. Non funziona neanche se riavvio Apache.
Che può essere?

$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_set_option($socket, SOL_SOCKET, SO_BROADCAST, 1);
$a=socket_connect($socket, $adr, $port);
socket_send($socket, $pck, strlen($pck), 0)
socket_close($socket);

da notare che il socket_set_option torna sempre false.

Aggiungo:
per queste istruzioni non funzionano in windows:

if (socket_set_option($sock, SOL_SOCKET, SO_LINGER, array('l_onoff' =>
1, 'l_linger' => 0))){
echo 'Unable to set SO_LINGER: '. socket_strerror(socket_last_error())
.. PHP_EOL;
}
if (socket_set_option($sock, SOL_SOCKET,
SO_BROADCAST, 1)) {
echo 'Unable to set SO_BROADCAST: '.
socket_strerror(socket_last_error()) . PHP_EOL;
}
if (socket_set_option($sock, SOL_SOCKET,
SO_SNDTIMEO, array('sec'=>1, 'usec'=>0))){
echo 'Unable to set SO_SNDTIMEO: '.
socket_strerror(socket_last_error()) . PHP_EOL;
}