라이브러리
[PHP] socket_create_pair - 구별할 수 없는 소켓 쌍을 생성하여 배열에 저장합니다.
PHP 소켓 프로그래밍
소켓은 네트워크 프로그래밍에서 사용되는 기본적인 통신 단위입니다. PHP에서 소켓을 사용하여 서버와 클라이언트 간의 통신을 구현할 수 있습니다. `socket_create_pair` 함수는 PHP에서 소켓을 생성하는 데 사용되는 함수 중 하나입니다.
socket_create_pair 함수
`socket_create_pair` 함수는 두 개의 소켓을 생성하여 통신을 가능하게 합니다. 이 함수는 두 개의 소켓을 생성하고, 하나는 서버 소켓, 다른 하나는 클라이언트 소켓으로 사용됩니다.
함수 시그니처
#hostingforum.kr
php
socket_create_pair($domain, $type, $protocol)
* `$domain`: 소켓을 생성할 도메인 유형입니다. 예를 들어, `AF_INET`은 IPv4를 의미하고, `AF_INET6`은 IPv6를 의미합니다.
* `$type`: 소켓을 생성할 유형입니다. 예를 들어, `SOCK_STREAM`은 연결형 통신을 의미하고, `SOCK_DGRAM`은 비연결형 통신을 의미합니다.
* `$protocol`: 소켓을 생성할 프로토콜 유형입니다. 예를 들어, `IPPROTO_TCP`은 TCP를 의미하고, `IPPROTO_UDP`은 UDP를 의미합니다.
예제
다음은 `socket_create_pair` 함수를 사용하여 서버와 클라이언트 간의 통신을 구현하는 예제입니다.
#hostingforum.kr
php
<?php
// 소켓 도메인, 유형, 프로토콜 설정
$domain = AF_INET;
$type = SOCK_STREAM;
$protocol = IPPROTO_TCP;
// 소켓 쌍을 생성
if (!socket_create_pair($domain, $type, $protocol, $server_socket, $client_socket)) {
echo "소켓 쌍 생성 실패: " . socket_strerror(socket_last_error()) . "
";
exit;
}
// 서버 소켓에 연결
if (!socket_bind($server_socket, 'localhost', 8080)) {
echo "서버 소켓 바인딩 실패: " . socket_strerror(socket_last_error()) . "
";
exit;
}
// 클라이언트 소켓에 연결
if (!socket_connect($client_socket, 'localhost', 8080)) {
echo "클라이언트 소켓 연결 실패: " . socket_strerror(socket_last_error()) . "
";
exit;
}
// 서버 소켓에서 데이터 수신
while (true) {
$data = socket_read($server_socket, 1024);
if ($data === false) {
break;
}
echo "서버에서 받은 데이터: $data
";
}
// 클라이언트 소켓에서 데이터 송신
while (true) {
$data = fgets(STDIN);
if ($data === false) {
break;
}
if (!socket_write($client_socket, $data)) {
echo "클라이언트 소켓에 데이터 송신 실패: " . socket_strerror(socket_last_error()) . "
";
break;
}
}
// 소켓 닫기
socket_close($server_socket);
socket_close($client_socket);
?>
이 예제에서는 `socket_create_pair` 함수를 사용하여 서버와 클라이언트 간의 통신을 구현합니다. 서버 소켓은 `localhost`에 `8080` 포트에서 listens하고, 클라이언트 소켓은 `localhost`에 `8080` 포트에 연결합니다. 서버 소켓에서 데이터를 수신하고, 클라이언트 소켓에서 데이터를 송신합니다.
소켓 닫기
소켓을 사용한 통신이 완료되면, 소켓을 닫아야 합니다. 소켓 닫기는 `socket_close` 함수를 사용하여 수행할 수 있습니다.
#hostingforum.kr
php
socket_close($server_socket);
socket_close($client_socket);
소켓 닫기는 소켓을 사용한 통신이 완료되었을 때 수행해야 합니다. 소켓을 닫지 않으면, 소켓이 계속 열려있을 수 있습니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.