2011-08-08 7 views
1

클라이언트 컴퓨터의 IP 주소를 sockaddr에서 가져올 수 있습니까?클라이언트의 IP 주소/MAC 주소

클라이언트에서 나는 사용자가 서버에 연결되어있는 시스템 또는 브라우저를 의미합니다.

클라이언트가 일부 프록시/라우터 뒤에 있으며 서버에 직접 연결되어 있지 않은 것으로 가정합니다.

답변

3

서버가 응답 패킷을 보내는 IP 주소를 가져올 수 있습니다. 종종이 클라이언트 컴퓨터의 IP 주소는 있지만 그럴 필요하지 않습니다

  • 의 IPv4 NAT 장치 (주로 기업 네트워크에서 사용) 클라이언트의 IP 주소를 숨기고 대신 NAT 장치의 주소를 노출 .
  • 6 대 4 번역. 클라이언트가 기본 IPv6 전용 클라이언트 인 경우 IPv4 서버에는 IPv4 연결을 제공하는 6 대 4 게이트웨이의 IPv4 주소가 표시됩니다.
  • 클라이언트가 인터넷에 직접 연결되어 있지 않고 서버 대신 요청을 수행하는 프록시 서버에 연결하는 프록시입니다. 이 경우 서버에는 프록시 서버 주소가 표시됩니다.

클라이언트 컴퓨터의 IP 주소가 필요한 경우 클라이언트는 데이터를 서버로 보내야합니다. 이 방법으로받는 주소가 실제 주소라는 보장은 없습니다. 그것이 진짜 일지라도, 그것은 고유하게 보장 될 수 없습니다 (많은 회사 네트워크는 내부 용으로 예약 된 192.168.X.X 시리즈의 주소를 사용합니다). 또한 내부 주소에서 클라이언트에 연결할 수 없을 가능성이 거의 없습니다.

0

확인 같은 질문 A와이 대답 Getting IPV4 address from a sockaddr structure

socket.h 상태 (나는 당신의 제대로 질문을 이해한다면) :

int accept (int socket, struct sockaddr *address, 
           socklen_t *address_len); 

주소 : 널 포인터, 또는 SOCKADDR 구조 곳으로 포인터 중 하나를 연결 소켓의 주소가 리턴됩니다.