현재 위치: > 최신 기사 목록> Socket_Last_Error () + Socket_Clear_Error () 사용 방법 오류 코드 필터링을 구현하십시오.

Socket_Last_Error () + Socket_Clear_Error () 사용 방법 오류 코드 필터링을 구현하십시오.

M66 2025-05-27

오류 관리는 PHP로 프로그래밍 할 때 네트워크 커뮤니케이션 프로그램을 디버깅하고 유지 관리하는 데 중요한 부분입니다. socket_last_error ()socket_clear_error () 는 오류 처리를 위해 PHP에서 제공하는 두 가지 함수입니다. 개발자가 가장 최근의 소켓 오류 정보를 얻고 지우도록 도와 줄 수 있습니다. 이 기사는이 두 기능을 사용하는 방법을 자세히 설명하고 예제를 사용하여 오류 코드를 필터링하는 방법과 명확한 오류 정보를 보여줍니다.

1. socket_last_error () 함수

Socket_last_error ()는 마지막 소켓 작동의 오류 코드를 반환하는 데 사용됩니다. 프로토 타입은 다음과 같습니다.

 int socket_last_error ([ resource $socket ] )
  • 매개 변수 $ 소켓은 선택 사항입니다. 특정 소켓 자원이 전달되면 소켓의 오류 코드가 반환됩니다. 전달되지 않으면 기본값이 발생한 오류 코드가 반환됩니다.

  • 리턴 값은 오류 코드를 나타내는 정수입니다.

2. socket_clear_error () 함수

Socket_clear_error ()는 최신 소켓 오류 레코드를 지우는 데 사용됩니다. 프로토 타입은 다음과 같습니다.

 void socket_clear_error ([ resource $socket ] )
  • 매개 변수 $ 소켓 도 선택 사항입니다. 통과하지 않으면 글로벌 소켓 오류를 지우십시오. 특정 소켓 리소스가 전달되면 리소스의 오류 레코드를 지우십시오.

3. 실제 적용 사례

다음은 간단한 TCP 클라이언트 연결 예입니다.이 두 기능을 사용하여 오류를 캡처, 필터링 및 명확하게하는 방법을 보여줍니다.

 <?php
// a TCP socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

// 존재하지 않는 주소에 불법적으로 연결합니다,트리거 오류
$host = 'm66.net';
$port = 9999; // 이 포트에 서비스 청취가 없다고 가정하십시오
@socket_connect($socket, $host, $port);

// 오류 코드를 가져옵니다
$errorCode = socket_last_error($socket);

if ($errorCode !== 0) {
    // 오류 메시지를 받으십시오
    $errorMessage = socket_strerror($errorCode);
    echo "연결이 실패했습니다,오류 코드: $errorCode,오류 메시지: $errorMessage\n";

    // 根据오류 코드进行逻辑判断
    if ($errorCode === 111 || $errorCode === 10061) {
        echo "대상 호스트는 연결을 거부합니다,조사하다 m66.net:$port 서비스 활성화 여부。\n";
    } elseif ($errorCode === 110 || $errorCode === 10060) {
        echo "연결 시간 초과,확인하십시오 m66.net 접근 가능합니까?。\n";
    }

    // 오류 상태를 지우십시오
    socket_clear_error($socket);
}

// 프로그램 논리를 계속하십시오...
socket_close($socket);
?>

위 코드에서 :

  1. @socket_connect를 사용하여 기본 경고 메시지를 억제하십시오.

  2. socket_last_error () 를 통해 특정 오류 코드를 가져옵니다.

  3. socket_strerror ()를 사용하여 오류 코드를 사람이 읽을 수있는 문자열로 변환합니다.

  4. 오류 코드를 사용하여 연결이 거부되었는지, 시간 초과 또는 기타 문제가 있는지 확인하십시오.

  5. 마지막으로, socket_clear_error ()를 사용하여 후속 오해를 피하기 위해 오류를 지우십시오.

4. 공통 오류 코드 참조

오류 코드 의미
111 연결 거부 (Linux)
110 연결시기 (Linux)
10061 연결 거부 (Windows)
10060 연결 시간 (Windows) 연결