Sockets socket_get_option
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
socket_get_option — 소켓에 대한 소켓 옵션을 가져옵니다.
설명
socket_get_option(Socket $socket
, int $level
, int $option
): array|int|false
socket_get_option() 함수는 지정된 socket
에 대한 option
매개변수로 지정된 옵션의 값을 검색합니다.
매개변수
socket
- socket_create()로 생성된 Socket 인스턴스.
level
level
매개변수는 옵션이 있는 프로토콜 수준을 지정합니다. 예를 들어 소켓 수준에서 옵션을 검색하려면SOL_SOCKET
의level
매개변수가 사용됩니다.TCP
와 같은 다른 수준은 해당 수준의 프로토콜 번호를 지정하여 사용할 수 있습니다. 프로토콜 번호는 getprotobyname() 함수를 사용하여 찾을 수 있습니다.option
-
사용 가능한 소켓 옵션
Option 설명 Type SO_DEBUG
디버깅 정보가 기록되고 있는지 여부를 보고합니다. int SO_BROADCAST
브로드캐스트 메시지 전송이 지원되는지 여부를 보고합니다. int SO_REUSEADDR
로컬 주소를 재사용할 수 있는지 여부를 보고합니다. int SO_REUSEPORT
로컬 포트를 재사용할 수 있는지 여부를 보고합니다. int SO_KEEPALIVE
정기적인 메시지 전송으로 연결이 활성 상태로 유지되는지 여부를 보고합니다. 연결된 소켓이 이러한 메시지에 응답하지 않으면 연결이 끊어지고 해당 소켓에 쓰는 프로세스에 SIGPIPE 신호로 알립니다. int SO_LINGER
데이터가 있는 경우 socket
이 socket_close()에 남아 있는지 여부를 보고합니다. 기본적으로 소켓이 닫히면 보내지 않은 모든 데이터를 보내려고 시도합니다. 연결 지향 소켓의 경우 socket_close()는 피어가 데이터를 승인할 때까지 기다립니다.l_onoff가 0이 아니고 l_linger가 0이면 전송되지 않은 모든 데이터는 폐기되고 연결 지향 소켓의 경우 RST(재설정)가 피어로 전송됩니다.
반면에 l_onoff가 0이 아니고 l_linger가 0이 아니면 socket_close()는 모든 데이터가 전송되거나 l_linger에 지정된 시간이 경과할 때까지 차단됩니다. 소켓이 차단되지 않는 경우 socket_close()는 실패하고 오류를 반환합니다.
정렬. 배열에는 l_onoff 및 l_linger의 두 키가 포함됩니다. SO_OOBINLINE
socket
이 대역 외 데이터를 인라인으로 유지하는지 여부를 보고합니다.int SO_SNDBUF
송신 버퍼의 크기를 보고합니다. int SO_RCVBUF
수신 버퍼의 크기를 보고합니다. int SO_ERROR
오류 상태에 대한 정보를 보고하고 지웁니다. int (socket_set_option()으로 설정할 수 없음) SO_TYPE
socket
유형(예:SOCK_STREAM
)을 보고합니다.int (socket_set_option()으로 설정할 수 없음) SO_DONTROUTE
보내는 메시지가 표준 라우팅 기능을 우회하는지 여부를 보고합니다. int SO_RCVLOWAT
socket
입력 작업을 위해 처리할 최소 바이트 수를 보고합니다.int SO_RCVTIMEO
입력 작업에 대한 시간 초과 값을 보고합니다. 정렬. 배열에는 두 개의 키가 포함됩니다. sec은 시간 초과 값의 초 부분이고 usec는 시간 초과 값의 마이크로초 부분입니다. SO_SNDTIMEO
흐름 제어가 데이터 전송을 방지하기 때문에 출력 함수가 차단하는 시간을 지정하는 시간 초과 값을 보고합니다. 정렬. 배열에는 두 개의 키가 포함됩니다. sec은 시간 초과 값의 초 부분이고 usec는 시간 초과 값의 마이크로초 부분입니다. SO_SNDLOWAT
socket
출력 작업을 위해 처리할 최소 바이트 수를 보고합니다.int TCP_NODELAY
Nagle TCP 알고리즘이 비활성화되었는지 여부를 보고합니다. int MCAST_JOIN_GROUP
멀티캐스트 그룹에 참여합니다. "group"
키가 있는 배열, IPv4 또는 IPv6 멀티캐스트 주소가 있는 문자열을 지정하고"interface"
를 지정하고 인터페이스 번호(int 유형) 또는"eth0"
과 같은 인터페이스 이름이 있는string
을 지정합니다. 라우팅 규칙을 사용하여 인터페이스를 선택해야 함을 나타내기 위해0
을 지정할 수 있습니다. (socket_set_option()에서만 사용할 수 있음)MCAST_LEAVE_GROUP
멀티캐스트 그룹을 나갑니다. 정렬. 자세한 내용은 MCAST_JOIN_GROUP
을 참조하세요. (socket_set_option()에서만 사용할 수 있음)MCAST_BLOCK_SOURCE
특정 소스에서 이전에 가입했어야 하는 특정 멀티캐스트 그룹으로 패킷이 도착하는 것을 차단합니다. MCAST_JOIN_GROUP
과 동일한 키와 차단할 소스의 IPv4 또는 IPv6 주소를 지정하는 문자열에 매핑되는 하나의 추가 키source
가 있는 배열입니다. (socket_set_option()에서만 사용할 수 있음)MCAST_UNBLOCK_SOURCE
특정 소스 주소에서 이전에 가입했어야 하는 특정 멀티캐스트 그룹으로 도착하는 패킷을 차단 해제(다시 수신 시작)합니다. MCAST_BLOCK_SOURCE
와 동일한 형식의 배열입니다. (socket_set_option()에서만 사용할 수 있음)MCAST_JOIN_SOURCE_GROUP
소스 주소가 특정 값과 일치하는 특정 멀티캐스트 그룹으로 향하는 패킷을 수신합니다. MCAST_BLOCK_SOURCE
와 동일한 형식의 배열입니다. (socket_set_option()에서만 사용할 수 있음)MCAST_LEAVE_SOURCE_GROUP
소스 주소가 특정 값과 일치하는 특정 멀티캐스트 그룹으로 향하는 패킷 수신을 중지합니다. MCAST_BLOCK_SOURCE
와 동일한 형식의 배열입니다. (socket_set_option()에서만 사용할 수 있음)IP_MULTICAST_IF
IPv4 멀티캐스트 패킷을 위한 나가는 인터페이스 인터페이스 번호를 지정하는 int 또는 eth0
과 같은 인터페이스 이름이 있는 문자열입니다. 값 0은 라우팅 테이블이 인터페이스 선택에 사용됨을 나타내는 데 사용할 수 있습니다. socket_get_option() 함수는 인터페이스 인덱스를 반환합니다. C API와 달리 이 옵션은 IP 주소를 사용하지 않습니다. 이것은IP_MULTICAST_IF
와IPV6_MULTICAST_IF
사이의 인터페이스 차이를 제거합니다.IPV6_MULTICAST_IF
IPv6 멀티캐스트 패킷을 위한 나가는 인터페이스입니다. IP_MULTICAST_IF
와 동일합니다.IP_MULTICAST_LOOP
IPv4 패킷에 대한 멀티캐스트 루프백 정책은 이 소켓에서 보낸 멀티캐스트 패킷이 이 소켓에서 사용하는 나가는 인터페이스의 동일한 멀티캐스트 그룹에 가입한 동일한 호스트의 수신기에도 도달하는지 여부를 결정합니다. 이것은 기본적으로 그렇습니다. 정수( 0
또는1
). socket_set_option()의 경우 모든 값이 허용되며 일반적인 PHP 규칙에 따라 부울 값으로 변환됩니다.IPV6_MULTICAST_LOOP
IP_MULTICAST_LOOP
와 유사하지만 IPv6용입니다.정수 IP_MULTICAST_LOOP
를 참조하십시오.IP_MULTICAST_TTL
나가는 IPv4 멀티캐스트 패킷의 수명입니다. 이것은 0(인터페이스를 떠나지 않음)과 255 사이의 값이어야 합니다. 기본값은 1(로컬 네트워크에만 도달)입니다. 0에서 255 사이의 정수입니다. IPV6_MULTICAST_HOPS
IP_MULTICAST_TTL
과 유사하지만 IPv6 패킷용입니다. 값 -1도 허용되며 이는 경로 기본값을 사용해야 함을 의미합니다.-1에서 255 사이의 정수입니다. SO_MARK
Linux에서 패킷 필터링을 위해 소켓에 식별자를 설정합니다. int SO_ACCEPTFILTER
수신된 소켓(FreeBSD/NetBSD)에 수락 필터를 추가합니다. 수락 필터 커널 모듈은 FreeBSD(예: accf_http)에 미리 로드되어야 합니다. 필터의 문자열 이름(최대 길이 15). SO_USER_COOKIE
FreeBSD에서 패킷 필터링을 위해 소켓에 식별자를 설정합니다. int SO_DONTTRUNC
Retain unread data. int SO_WANTMORE
더 많은 데이터가 준비되면 힌트를 주세요. int TCP_DEFER_ACCEPT
데이터가 준비될 때까지 수신 소켓에 알리지 마십시오. int
반환 값
주어진 옵션의 값을 반환하거나 실패하면 false
를 반환합니다.
변경 로그
버전 | 설명 |
---|---|
8.0.0 | socket 은 이제 Socket 인스턴스입니다. 이전에는 리소스였습니다. |
Examples
예제 #1 socket_get_option() 예제
<?php
$socket = socket_create_listen(1223);
$linger = array('l_linger' => 1, 'l_onoff' => 1);
socket_set_option($socket, SOL_SOCKET, SO_LINGER, $linger);
var_dump(socket_get_option($socket, SOL_SOCKET, SO_REUSEADDR));
?>
기타
- socket_create_listen() - 연결을 수락하기 위해 포트의 소켓을 엽니다.
- socket_set_option() - 소켓에 대한 소켓 옵션 설정