2009-03-29 10 views
0

Serveur:UDP écrire à la prise et de lecture de la prise en même temps

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

le serveur reçoit les données du client, mais le client n'a rien du serveur et ne pas arrêter de courir.

Répondre

1

Le serveur renvoie le paquet à lui-même, vous devez lui transmettre le port du client, pas du serveur. Donc:

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