Nasıl UDP üzerinden bir IP adresi PHP ile veri gönderebilir?

3 Cevap php

Nasıl UDP üzerinden bir IP adresi PHP ile veri gönderebilir?

Nasıl diğer bilgisayardaki verileri recive olabilir?

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

Bu kod ben başka bir bilgisayarda okumak bir program ile "KiK" ​​gönderir, ama nasıl ben bunu tarayıcıda görebilirsiniz?

3 Cevap

Benim PHP bilgi yüzden bazı iyi kılavuzları ve öğreticiler bulmak için çalışan bazı arama yapıyorum biraz paslı. Bu sizin için iyi bir başlangıç ​​rehber olacak gibi bu bir PHP Sockets Made Easy görünüyor.

Edit: Ben yayınlanan orijinal makale yüzden önceki kod ortadan UDP için büyük detaya gitmedi. PHP Manual adlı makalede, özellikle UDP ile ilgili biraz daha bilgi var:

<?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: İşte PHP soket programlama için başka useful tutorial olduğunu. Çoğunlukla TCP olduğunu ancak bunun yerine UDP kullanmak kodu değiştirmek için nasıl bir bölüm içermez.

Sadece bazı çalışma kod üzerinden bu pasajı çekti



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

Sana PHP's socket reference bu konuda çalışmak için iyi bir yer olduğunu göreceksiniz düşünüyorum.