
stream_socket_server 함수를 사용하여 클라이언트의 요청을 받을 수 있도록 하는 방법은 다음과 같습니다.
1. 클라이언트의 요청을 받을 때, 서버는 클라이언트의 IP 주소와 포트 번호를 확인할 수 있습니다. 이 정보는 stream_socket_accept 함수를 사용하여 얻을 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다.
#hostingforum.kr
php
$socket = stream_socket_server('localhost:1234', $errno, $errstr, STREAM_SERVER_BIND);
$client_socket = stream_socket_accept($socket, $errno, $errstr);
$client_ip = stream_socket_get_name($client_socket, false);
$client_port = explode(':', stream_socket_get_name($client_socket, false))[1];
2. 서버와 클라이언트 간의 데이터 전송을 위한 프로토콜은 TCP/IP 프로토콜을 사용합니다. 이 프로토콜은 stream_socket_server 함수를 사용하여 기본적으로 설정됩니다.
3. 서버와 클라이언트 간의 데이터 전송을 위한 버퍼 사이즈는 stream_socket_server 함수의 옵션 중 하나입니다. 기본적으로 버퍼 사이즈는 8192바이트입니다. 이 옵션을 변경하려면 다음과 같이 사용할 수 있습니다.
#hostingforum.kr
php
$socket = stream_socket_server('localhost:1234', $errno, $errstr, STREAM_SERVER_BIND, array('buffer_size' => 4096));
4. 서버와 클라이언트 간의 데이터 전송을 위한 소켓 옵션은 stream_socket_server 함수의 옵션 중 하나입니다. 예를 들어, 소켓 옵션을 다음과 같이 설정할 수 있습니다.
#hostingforum.kr
php
$socket = stream_socket_server('localhost:1234', $errno, $errstr, STREAM_SERVER_BIND, array('so_reuseaddr' => 1, 'so_keepalive' => 1));
5. 서버와 클라이언트 간의 데이터 전송을 위한 에러 핸들링은 try-catch 문을 사용하여 수행할 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다.
#hostingforum.kr
php
try {
$socket = stream_socket_server('localhost:1234', $errno, $errstr, STREAM_SERVER_BIND);
$client_socket = stream_socket_accept($socket, $errno, $errstr);
// 데이터 전송 코드
} catch (Exception $e) {
echo "에러 발생: " . $e->getMessage();
}
클라이언트가 "Hello"를 요청했을 때 서버가 "World"를 응답하도록 구성하려면, 다음과 같이 코드를 작성할 수 있습니다.
#hostingforum.kr
php
$socket = stream_socket_server('localhost:1234', $errno, $errstr, STREAM_SERVER_BIND);
$client_socket = stream_socket_accept($socket, $errno, $errstr);
fwrite($client_socket, "World");
fclose($client_socket);
fclose($socket);
클라이언트에서 "Hello"를 요청하는 코드는 다음과 같습니다.
#hostingforum.kr
php
$client_socket = stream_socket_client('localhost:1234', $errno, $errstr, 30);
fwrite($client_socket, "Hello");
$data = fread($client_socket, 1024);
echo "응답: $data";
fclose($client_socket);
2025-07-24 06:01