라이브러리
[PHP] socket_listen - 소켓에서 연결을 수신합니다.
socket_listen란?
PHP의 socket_listen는 TCP 소켓을 생성하고 listen 모드로 설정하는 함수입니다. 이 함수를 사용하면 서버가 클라이언트의 연결 요청을 기다릴 수 있습니다.
socket_listen 함수의 매개변수
socket_listen 함수의 매개변수는 다음과 같습니다.
- `sock`: 소켓 핸들. 이 매개변수는 필수이며, 소켓을 생성하기 전에 socket_create 함수를 사용하여 생성해야 합니다.
- `backlog`: 연결 요청을 처리하기 위한 큐의 크기. 이 매개변수는 옵션이며, 기본값은 0입니다.
socket_listen 함수의 반환값
socket_listen 함수는 성공 시 0을 반환하고, 실패 시 FALSE를 반환합니다.
예제
다음 예제는 TCP 소켓을 생성하고 listen 모드로 설정하는 방법을 보여줍니다.
#hostingforum.kr
php
<?php
// TCP 소켓을 생성합니다.
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// 소켓을 listen 모드로 설정합니다.
if (!socket_listen($sock)) {
echo "socket_listen 실패: " . socket_strerror(socket_last_error()) . "
";
exit;
}
echo "소켓이 listen 모드로 설정되었습니다.
";
// 클라이언트의 연결 요청을 기다립니다.
while (true) {
$client_sock = socket_accept($sock);
if ($client_sock === false) {
echo "socket_accept 실패: " . socket_strerror(socket_last_error()) . "
";
continue;
}
echo "클라이언트가 연결되었습니다.
";
// 클라이언트와 통신합니다.
while (true) {
$buf = socket_read($client_sock, 1024);
if ($buf === false) {
echo "socket_read 실패: " . socket_strerror(socket_last_error()) . "
";
break;
}
echo "클라이언트가 보낸 메시지: $buf
";
// 클라이언트에게 메시지를 보냅니다.
$msg = "클라이언트에게 보낸 메시지";
socket_write($client_sock, $msg, strlen($msg));
}
socket_close($client_sock);
}
socket_close($sock);
?>
소켓을 listen 모드로 설정하는 방법
1. TCP 소켓을 생성합니다.
2. 소켓을 listen 모드로 설정합니다.
3. 클라이언트의 연결 요청을 기다립니다.
4. 클라이언트와 통신합니다.
소켓을 listen 모드로 설정하는 예제
#hostingforum.kr
php
<?php
// TCP 소켓을 생성합니다.
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// 소켓을 listen 모드로 설정합니다.
if (!socket_listen($sock)) {
echo "socket_listen 실패: " . socket_strerror(socket_last_error()) . "
";
exit;
}
echo "소켓이 listen 모드로 설정되었습니다.
";
// 클라이언트의 연결 요청을 기다립니다.
while (true) {
$client_sock = socket_accept($sock);
if ($client_sock === false) {
echo "socket_accept 실패: " . socket_strerror(socket_last_error()) . "
";
continue;
}
echo "클라이언트가 연결되었습니다.
";
// 클라이언트와 통신합니다.
while (true) {
$buf = socket_read($client_sock, 1024);
if ($buf === false) {
echo "socket_read 실패: " . socket_strerror(socket_last_error()) . "
";
break;
}
echo "클라이언트가 보낸 메시지: $buf
";
// 클라이언트에게 메시지를 보냅니다.
$msg = "클라이언트에게 보낸 메시지";
socket_write($client_sock, $msg, strlen($msg));
}
socket_close($client_sock);
}
socket_close($sock);
?>
소켓을 listen 모드로 설정하는 방법에 대한 참고 자료
- [PHP Manual - socket_listen](https://www.php.net/manual/en/function.socket-listen.php)
- [PHP Manual - socket_accept](https://www.php.net/manual/en/function.socket-accept.php)
- [PHP Manual - socket_read](https://www.php.net/manual/en/function.socket-read.php)
- [PHP Manual - socket_write](https://www.php.net/manual/en/function.socket-write.php)
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.