accpet()함수에서 argument 중 sockaddr로 전달되는 인수는 클라이언트의 주소잖아요...
이 주소가 이상하게 나오거든요...
클라이언트와 아무 상관이 없는 ip 주소가 찍힙니다...
무엇이 잘 못 된거죠...
너무 막연한 질문인데요...
저역시 막연해서요...
어디시 부터 잘못된 것을 찾아야 할지 몰라서요...
부탁 드립니다...
어떤 방식으로 IP 값을 확인하셨는지...
koonpal님을 너무 과소평가하는 것인지 모르겠지만, 다음과 같은 방식으로 리턴받은 addr의 IP를 확인합니다. 편의상, 리눅스 상에서 IPv4로 통신한다고 가정합니다.
char ipstr[INET_ADDRSTRLEN]; ... connfd = accept(s, (struct sockaddr*)&sin, &sin_len); // print peer's ip address inet_ntop(AF_INET, &sin, ipstr, INET_ADDRSTRLEN); fprintf(stdout, "peer ip = %s\n", ipstr);
위와 같이 했는데 IP가 다르게 나온다면, 저로서는 client의 IP가 다른 IP로 NAT된 경우 이외에는 생각할 수가 없군요. ;)
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
어떤 방식으로 IP 값을 확인하셨는지...koonpal님을 너무
어떤 방식으로 IP 값을 확인하셨는지...
koonpal님을 너무 과소평가하는 것인지 모르겠지만, 다음과 같은 방식으로 리턴받은 addr의 IP를 확인합니다.
편의상, 리눅스 상에서 IPv4로 통신한다고 가정합니다.
위와 같이 했는데 IP가 다르게 나온다면, 저로서는 client의 IP가 다른 IP로 NAT된 경우 이외에는 생각할 수가 없군요. ;)
댓글 달기