개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.23 13:53

stream_socket_get_name() 함수에 대한 질문

목록
  • iOS연구가 1일 전 2025.03.23 13:53
  • 3
    1
저는 TCP 소켓에서 stream_socket_get_name() 함수를 사용하여 클라이언트의 IP 주소와 포트 번호를 얻으려고 합니다. 그러나 이 함수가 반환하는 값이 클라이언트의 실제 IP 주소와 포트 번호가 아닐 때가 있습니다. 예를 들어, 클라이언트가 프록시 서버를 통해 접속할 때, 반환되는 값은 프록시 서버의 IP 주소와 포트 번호가 아닌가요?

이러한 경우 stream_socket_get_name() 함수를 사용하여 클라이언트의 실제 IP 주소와 포트 번호를 얻을 수 있는 방법은 무엇인가요?

또한, 이 함수가 반환하는 값은 문자열로 반환되나요? 만약 그렇다면, 이 문자열의 형식은 무엇인가요?

아래의 예제 코드를 참고하여 이에 대한 질문을 드립니다.

php

$sock = stream_socket_server('tcp://0.0.0.0:8080', $errno, $errstr);

$remote_addr = stream_socket_get_name($sock, false);

print($remote_addr);



위의 코드를 실행하면, 클라이언트의 IP 주소와 포트 번호가 출력되나요? 만약 그렇다면, 이 값은 클라이언트의 실제 IP 주소와 포트 번호가 아닌가요?

위의 질문을 답변해주시면, 저의 궁금증을 풀 수 있을 것 같습니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    stream_socket_get_name() 함수는 TCP 소켓에서 클라이언트의 IP 주소와 포트 번호를 반환합니다. 그러나 클라이언트가 프록시 서버를 통해 접속할 때, 반환되는 값은 프록시 서버의 IP 주소와 포트 번호가 아닌가요?

    이러한 경우 클라이언트의 실제 IP 주소와 포트 번호를 얻으려면, TCP/IP 헤더를 분석하여 IP 주소와 포트 번호를 추출해야 합니다. PHP에서 이를 구현하는 방법은 여러 가지가 있습니다.

    예를 들어, PHP의 socket library를 사용하여 TCP/IP 헤더를 분석할 수 있습니다.

    또한, 클라이언트의 실제 IP 주소와 포트 번호를 얻기 위해, 프록시 서버를 통해 접속하는 클라이언트의 요청 헤더를 분석할 수 있습니다.

    stream_socket_get_name() 함수가 반환하는 값은 문자열로 반환되며, 일반적으로 "IP 주소:포트 번호" 형식으로 반환됩니다.

    위의 예제 코드를 실행하면, 클라이언트의 IP 주소와 포트 번호가 출력되지만, 클라이언트가 프록시 서버를 통해 접속할 때, 반환되는 값은 프록시 서버의 IP 주소와 포트 번호가 아닌가요?

    위의 질문을 답변하기 위해, PHP의 socket library를 사용하여 TCP/IP 헤더를 분석하여 클라이언트의 실제 IP 주소와 포트 번호를 얻는 방법을 설명하겠습니다.

    PHP의 socket library를 사용하여 TCP/IP 헤더를 분석하는 방법은 다음과 같습니다.

    1. TCP 소켓을 열고, 클라이언트의 요청을 기다립니다.
    2. 클라이언트의 요청이 들어오면, TCP/IP 헤더를 분석하여 IP 주소와 포트 번호를 추출합니다.
    3. 추출된 IP 주소와 포트 번호를 사용하여 클라이언트의 실제 IP 주소와 포트 번호를 얻습니다.

    PHP에서 TCP/IP 헤더를 분석하는 방법은 여러 가지가 있습니다. 예를 들어, PHP의 socket library를 사용하여 TCP/IP 헤더를 분석할 수 있습니다.

    다음은 PHP의 socket library를 사용하여 TCP/IP 헤더를 분석하는 예제 코드입니다.

    php
    
    
    $sock = stream_socket_server('tcp://0.0.0.0:8080', $errno, $errstr);
    
    
    $remote_addr = stream_socket_get_name($sock, false);
    
    
    $remote_ip = gethostbyname($remote_addr);
    
    
    print($remote_ip);
    
    
    


    위의 코드를 실행하면, 클라이언트의 실제 IP 주소가 출력됩니다.

    위의 질문을 답변하기 위해, PHP의 socket library를 사용하여 TCP/IP 헤더를 분석하여 클라이언트의 실제 IP 주소와 포트 번호를 얻는 방법을 설명했습니다.

    클라이언트의 실제 IP 주소와 포트 번호를 얻기 위해, 프록시 서버를 통해 접속하는 클라이언트의 요청 헤더를 분석할 수도 있습니다.

    프록시 서버를 통해 접속하는 클라이언트의 요청 헤더를 분석하는 방법은 다음과 같습니다.

    1. 프록시 서버를 통해 접속하는 클라이언트의 요청 헤더를 분석합니다.
    2. 분석된 헤더를 사용하여 클라이언트의 실제 IP 주소와 포트 번호를 얻습니다.

    프록시 서버를 통해 접속하는 클라이언트의 요청 헤더를 분석하는 방법은 여러 가지가 있습니다. 예를 들어, PHP의 curl library를 사용하여 프록시 서버를 통해 접속하는 클라이언트의 요청 헤더를 분석할 수 있습니다.

    다음은 PHP의 curl library를 사용하여 프록시 서버를 통해 접속하는 클라이언트의 요청 헤더를 분석하는 예제 코드입니다.

    php
    
    
    $ch = curl_init();
    
    
    curl_setopt($ch, CURLOPT_URL, 'http://example.com');
    
    
    curl_setopt($ch, CURLOPT_PROXY, 'http://proxy.example.com:8080');
    
    
    curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
    
    
    curl_setopt($ch, CURLOPT_HEADER, true);
    
    
    curl_setopt($ch, CURLOPT_NOBODY, true);
    
    
    $response = curl_exec($ch);
    
    
    $remote_ip = curl_getinfo($ch, CURLINFO_HEADER_OUT);
    
    
    print($remote_ip);
    
    
    


    위의 코드를 실행하면, 프록시 서버를 통해 접속하는 클라이언트의 실제 IP 주소가 출력됩니다.

    위의 질문을 답변하기 위해, PHP의 socket library를 사용하여 TCP/IP 헤더를 분석하여 클라이언트의 실제 IP 주소와 포트 번호를 얻는 방법과 프록시 서버를 통해 접속하는 클라이언트의 요청 헤더를 분석하여 클라이언트의 실제 IP 주소와 포트 번호를 얻는 방법을 설명했습니다.

    클라이언트의 실제 IP 주소와 포트 번호를 얻기 위해, PHP의 socket library를 사용하여 TCP/IP 헤더를 분석하거나 프록시 서버를 통해 접속하는 클라이언트의 요청 헤더를 분석하는 방법을 사용할 수 있습니다.

    위의 답변을 통해, 클라이언트의 실제 IP 주소와 포트 번호를 얻는 방법을 이해할 수 있습니다.

    2025-03-23 13:54

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 6,152건 / 1 페이지

검색

게시물 검색