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_SOCKETlevel 매개변수가 사용됩니다. TCP와 같은 다른 수준은 해당 수준의 프로토콜 번호를 지정하여 사용할 수 있습니다. 프로토콜 번호는 getprotobyname() 함수를 사용하여 찾을 수 있습니다.
option

사용 가능한 소켓 옵션

Option 설명 Type
SO_DEBUG 디버깅 정보가 기록되고 있는지 여부를 보고합니다. int
SO_BROADCAST 브로드캐스트 메시지 전송이 지원되는지 여부를 보고합니다. int
SO_REUSEADDR 로컬 주소를 재사용할 수 있는지 여부를 보고합니다. int
SO_REUSEPORT 로컬 포트를 재사용할 수 있는지 여부를 보고합니다. int
SO_KEEPALIVE 정기적인 메시지 전송으로 연결이 활성 상태로 유지되는지 여부를 보고합니다. 연결된 소켓이 이러한 메시지에 응답하지 않으면 연결이 끊어지고 해당 소켓에 쓰는 프로세스에 SIGPIPE 신호로 알립니다. int
SO_LINGER 데이터가 있는 경우 socketsocket_close()에 남아 있는지 여부를 보고합니다. 기본적으로 소켓이 닫히면 보내지 않은 모든 데이터를 보내려고 시도합니다. 연결 지향 소켓의 경우 socket_close()는 피어가 데이터를 승인할 때까지 기다립니다.

l_onoff가 0이 아니고 l_linger가 0이면 전송되지 않은 모든 데이터는 폐기되고 연결 지향 소켓의 경우 RST(재설정)가 피어로 전송됩니다.

반면에 l_onoff가 0이 아니고 l_linger가 0이 아니면 socket_close()는 모든 데이터가 전송되거나 l_linger에 지정된 시간이 경과할 때까지 차단됩니다. 소켓이 차단되지 않는 경우 socket_close()는 실패하고 오류를 반환합니다.

정렬. 배열에는 l_onoffl_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_IFIPV6_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));
?>
                  
                

기타