Autor Zpráva
Fikus
Profil
Ahoj,
pokousim se o vytvoreni UDP serveru. Z internetu mi chodi na muj serverovy port 47521 udp pakety ze 2 vzdalenych zarizeni, jejichz porty jsou (!)pevne dane (47521 a 47522). Jak vytvorit php skript, ktery na serveru bezi trvale, skryte a sype prichozi data do db? Jde to v php?

Na serveru mam php stranku, ktera ceka dlooouhy timeout na jeden paket. Kdyz opakovane refreshnu stranku objevi se warning socket_bind() unable to bind address [0] coz je pravdepodobne zpusobeno tim, ze se nedokoncil skript = nezavrel se port. Kdyz kouknu na netstat port je ve stavu TIME_WAIT. Tenhle warning mi zpusobi, ze uz nemuzu komunikovat se zarizenim 47521

Jak port znovu otevrit zprovoznit?

(Proc je u udp prikaz close_socket, kdyz se nevytvari tunel ale pouze se posilaji datagramy?)

Klient
  $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
  socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, 1);
  socket_sendto($sock, $broadcast_string, strlen($broadcast_string), 0, '255.255.255.255', 47521);
  socket_close($sock);


Server
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_bind($socket, '0.0.0.0', 47521);

$from = "";
$port = 0;
socket_recvfrom($socket, $buf, 12, 0, $from, $port);
close_socket($socket);
echo "Received $buf from remote address $from and remote port $port" . PHP_EOL;

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0