2009-03-26 5 views
5

Wie kann ich mit PHP Daten über UDP an eine IP-Adresse senden?Wie kann ich mit PHP Daten über UDP an eine IP-Adresse senden?

Wie kann ich diese Daten auf dem anderen Computer erhalten?

<?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; 
?> 

Dieser Code sendet der „kik“ mit einem Programm, das ich es auf dem anderen Computer lesen kann, aber wie kann ich es im Browser sehen?

+2

Viktor, bitte neu schreiben Ihre zweite Frage als eine andere Frage. –

Antwort

0

Ich denke, Sie werden feststellen, dass die PHP's socket reference ist ein guter Ort, um zu diesem Thema zu studieren.

7

Mein PHP-Wissen ist ein bisschen rostig, so habe ich einige Suche versucht, einige gute Führer und Tutorials zu finden. Dieser PHP Sockets Made Easy sieht aus wie es ein guter Starter Guide für Sie sein wird.

Bearbeiten: Der ursprüngliche Artikel, den ich gepostet habe, ging nicht sehr ins Detail für UDP, also beseitigte ich den vorherigen Code. Der Artikel aus dem PHP Manual hat einige weitere Informationen speziell in Bezug auf 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("D M j H:i:s Y\r\n"), 0, $peer); 
} while ($pkt !== false); 

?> 

Edit # 2: Hier ist ein weiterer useful tutorial für die Socket-Programmierung in PHP. Es ist hauptsächlich TCP, aber es enthält einen Abschnitt darüber, wie der Code geändert werden kann, um stattdessen UDP zu verwenden.

+2

Das ist ein TCP-Server - das OP fragt nach einem UDP-Client ... –

+0

Adam Davis: Danke dafür. Ich werde mich weiter anschaun. Ich weiß, dass der obige Artikel etwas über UDP spricht. – TheTXI

+0

Aw, das ist eine bessere Antwort als meine. Ich bin jetzt ganz eifersüchtig und verärgert. –

1

zog einfach diese Schnipsel aus einigen Arbeits Code I

haben


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 

+3

Schönes Beispiel für einen Forking - Server, aber ich denke, das OP ist nach einem UDP - Client ... –

+0

oops, vergessen Sie, einen Sendeabschnitt (das ist der einfache Teil) socket_sendto ($ sh, $ Paket, strlen ($ Paket), 0x100, $ connectip, $ dest_port) – Eddy

0
<?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"); 
} 
?> 
Verwandte Themen