2009-03-29 3 views
0

서버 :UDP 소켓에 쓸 동시에 소켓에서 읽을

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

클라이언트 :

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

서버가 클라이언트에서 데이터를 수신하지만 클라이언트가 서버에서 아무것도 없어하고 달리기를 멈추지 마라.

답변

1

서버가 자신에게 패킷을 보내면 서버가 아닌 클라이언트의 포트로 전달해야합니다. 따라서 :

socket_recvfrom($socket, $buf, 12, 0, $from, $port); 
socket_sendto($socket, $msg, strlen($msg), 0, $from, $port); 
관련 문제