2009-03-29 7 views
0

Server lesen:UDP Socket schreiben und aus der Steckdose zugleich

<?php 
error_reporting(E_ALL | E_STRICT); 

$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); 

socket_bind($socket, '127.0.0.1', 11104); 

$from = ""; 
$port = 0; 
socket_recvfrom($socket, $buf, 12, 0, $from, $port); 
//$buf=socket_read($socket, 2048); 

echo "Received $buf from remote address $from and remote port $port" . PHP_EOL; 
$msg="Sikerult"; 

//socket_write($socket, $msg, strlen($msg)); 
socket_sendto($socket, $msg, strlen($msg), 0, '127.0.0.1', 11104); 
//socket_close($socket); 
?> 

Client:

$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); 
$result = socket_connect($sock, '127.0.0.1', 11104); 
    $msg = "Sikerult"; 
    $len = strlen($msg); 
     //socket_write($sock, $msg, strlen($msg)); 
    socket_sendto($sock, $msg, $len, 0, '127.0.0.1', 11104); 
    //$buf=socket_read($sock, 2048); 
    socket_recvfrom($sock, $buf, 12, 0, $from, $port); 
    echo $buf; 
    socket_close($sock); 
?> 

der Server empfängt die Daten vom Client, aber der Kunde hat nichts von dem Server und höre nicht auf zu rennen.

Antwort

1

Der Server sendet das Paket zurück zu sich selbst, Sie müssen es den Port des Clients übergeben, nicht des Servers. Also:

socket_recvfrom($socket, $buf, 12, 0, $from, $port); 
socket_sendto($socket, $msg, strlen($msg), 0, $from, $port);