Как я могу отправить данные с PHP на IP-адрес через UDP?

Как я могу отправить данные с PHP на IP-адрес через UDP?

Как я могу получить эти данные на другом компьютере?

<?php $fp = pfsockopen( "udp://192.168.1.6", 9601, $errno, $errstr ); if (!$fp) { echo "ERROR: $errno - $errstr<br />\n"; } socket_set_timeout ($fp, 10); $write = fwrite( $fp, "kik" ); //$data .= fread($fp,9600); //echo "$data<br>"; fclose($fp); echo "<br>Connection closed ..<br>"; if (!$write) { echo "error writing to port: 9600.<br/>"; next; ?> 

Этот код отправляет «kik» с программой, которую я могу прочитать на другом компьютере, но как ее увидеть в браузере?

Мое знание PHP немного ржавое, поэтому я занимаюсь поиском, пытаясь найти хорошие руководства и учебные пособия. Этот один PHP Sockets Made Easy выглядит так, что это будет хорошим руководством для начинающих.

Изменить : оригинальная статья, которую я опубликовал, не вдавалась в подробности UDP, поэтому я исключил предыдущий код. В статье руководства PHP есть дополнительная информация о UDP:

 <?php $socket = stream_socket_server("udp://127.0.0.1:1113", $errno, $errstr, STREAM_SERVER_BIND); if (!$socket) { die("$errstr ($errno)"); } do { $pkt = stream_socket_recvfrom($socket, 1, 0, $peer); echo "$peer\n"; stream_socket_sendto($socket, date("DM j H:i:s Y\r\n"), 0, $peer); } while ($pkt !== false); ?> 

Редактировать # 2 : Вот еще один полезный учебник по программированию сокетов в PHP. Это в основном TCP, но в нем есть раздел о том, как изменить код для использования UDP.

Просто вытащил этот фрагмент из какого-то рабочего кода, который у меня есть

 if (!socket_bind($sh, LISTENIP, LISTENPORT)) exit("Could not bind to socket"); while (TRUE) { // $z = socket_recvfrom($sh, $data, 65535, 0, $connectip, $connectPort); while(socket_recvfrom($sh, $data, 65535, 0, $connectip, $connectPort)) { $pid = pcntl_fork(); if ($pid == -1) { die('could not fork'); } else { #START ELSE COULD FORK $PIDS[$pid] = $pid; //KEEP TRACK OF SPAWNED PIDS if ($pid) { //PARENT THREAD : $ch is a copy that we don't need in this thread } else { /** CHILD THREAD::BEGIN PROCESSING THE CONNECTION HERE! **/ include "include/child_thread.inc.php"; } //Child Thread }//if-else-forked /** CLEANUP THE CHILD PIDs HERE :: "Any system resources used by the child are freed." **/ foreach ($PIDS as $pid) pcntl_waitpid($pid,$status,WNOHANG); $i++; //INCREASE CONNECTION COUNTER }//While socket_accept /** CLEANUP THE PARENT PIDS **/ foreach ($PIDS as $pid) { $returnPid = pcntl_waitpid($pid,$status); unset($PIDS[$pid]); } }//While True то if (!socket_bind($sh, LISTENIP, LISTENPORT)) exit("Could not bind to socket"); while (TRUE) { // $z = socket_recvfrom($sh, $data, 65535, 0, $connectip, $connectPort); while(socket_recvfrom($sh, $data, 65535, 0, $connectip, $connectPort)) { $pid = pcntl_fork(); if ($pid == -1) { die('could not fork'); } else { #START ELSE COULD FORK $PIDS[$pid] = $pid; //KEEP TRACK OF SPAWNED PIDS if ($pid) { //PARENT THREAD : $ch is a copy that we don't need in this thread } else { /** CHILD THREAD::BEGIN PROCESSING THE CONNECTION HERE! **/ include "include/child_thread.inc.php"; } //Child Thread }//if-else-forked /** CLEANUP THE CHILD PIDs HERE :: "Any system resources used by the child are freed." **/ foreach ($PIDS as $pid) pcntl_waitpid($pid,$status,WNOHANG); $i++; //INCREASE CONNECTION COUNTER }//While socket_accept /** CLEANUP THE PARENT PIDS **/ foreach ($PIDS as $pid) { $returnPid = pcntl_waitpid($pid,$status); unset($PIDS[$pid]); } }//While True с if (!socket_bind($sh, LISTENIP, LISTENPORT)) exit("Could not bind to socket"); while (TRUE) { // $z = socket_recvfrom($sh, $data, 65535, 0, $connectip, $connectPort); while(socket_recvfrom($sh, $data, 65535, 0, $connectip, $connectPort)) { $pid = pcntl_fork(); if ($pid == -1) { die('could not fork'); } else { #START ELSE COULD FORK $PIDS[$pid] = $pid; //KEEP TRACK OF SPAWNED PIDS if ($pid) { //PARENT THREAD : $ch is a copy that we don't need in this thread } else { /** CHILD THREAD::BEGIN PROCESSING THE CONNECTION HERE! **/ include "include/child_thread.inc.php"; } //Child Thread }//if-else-forked /** CLEANUP THE CHILD PIDs HERE :: "Any system resources used by the child are freed." **/ foreach ($PIDS as $pid) pcntl_waitpid($pid,$status,WNOHANG); $i++; //INCREASE CONNECTION COUNTER }//While socket_accept /** CLEANUP THE PARENT PIDS **/ foreach ($PIDS as $pid) { $returnPid = pcntl_waitpid($pid,$status); unset($PIDS[$pid]); } }//While True 

Я думаю, вы обнаружите, что ссылка на сокет PHP является хорошим местом для изучения этой темы.

 <?php $server_ip = '127.0.0.1'; $server_port = 43278; $beat_period = 5; $message = 'PyHB'; print "Sending heartbeat to IP $server_ip, port $server_port\n"; print "press Ctrl-C to stop\n"; if ($socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP)) { while (1) { socket_sendto($socket, $message, strlen($message), 0, $server_ip, $server_port); print "Time: " . date("%r") . "\n"; sleep($beat_period); } } else { print("can't create socket\n"); } ?>