일반적인 udp 소켓을 socket_create()
으로 만들고 socket_bind()
을 사용하여 특정 포트에 바인딩 할 수 있습니다. 그런 다음 그것을 전송할 엔드 포인트와 포트를 지정하는 socket_sendto. 예제 코드는 다음과 같습니다. socket_stream_server()
를 사용하여 클라이언트의 포트 번호와 IP 주소를 뱉어
간단한 서버 :
<?php
set_time_limit (20);
$socket = stream_socket_server("udp://127.0.0.1:50000",
$errno, $errstr,
STREAM_SERVER_BIND);
if (!$socket) {
die("$errstr ($errno)");
}
do {
$packet = 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 ($packet !== false);
?>
클라이언트는 다음과 같이이다 :
<?php
$address = '127.0.0.1';
$port = 50001;
$dest_address = '127.0.0.1';
$dest_port = 50000;
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
if (socket_bind($sock, $address, $port) === false) {
echo "socket_bind() failed:" . socket_strerror(socket_last_error($sock)) . "\n";
}
$msg = "Ping !";
socket_sendto($sock, $msg, strlen($msg), 0, $dest_address, $dest_port);
socket_close($sock);
?>
명령 행에서 서버를 (실행)는 클라이언트를 여러 번 실행하면이 출력을 제공합니다.
<[email protected] php>php server.php
127.0.0.1:50001
127.0.0.1:50001
127.0.0.1:50001
^C
<[email protected] php>
이 공동 Windows의 경우 소켓에 대한 지원이 필요하다는 것을 명심해야합니다.
– Sebas