안녕하세요 ^^
입력받은 IP가 특정 대역의 IP인지 판단하고자 합니다.
그냥 문자열 비교하면 잘못된 경우가 생길 것 같아 검색을 해보니 inet_addr()함수를 알게 되었습니다.
xxx.xxx.xxx.xxx 문자열을 인자로 받아 32bit long으로 변환한다고 하는데요..
이 함수의 리턴값을 이용하여 ip대역에 속하는지 확신할 수 있나요??
좋은 하루 되시고 답변 부탁드려요~
POSIX정규식을 사용해 보세요. #include 를 포함하시고 아래의 함수들을 사용하시면 됩니다. regcomp, regexec, regfree
예로, "000.000.000.000"에서 "255.255.255.255"까지의 영역이면 ^(([0-1][0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-1][0-9]{2}|2[0-4][0-9]|25[0-5])$
"010.001.000.000"에서 "010.001.199.255"까지 ^010\.001\.[0-1][0-9]{2}\.([0-1][0-9]{2}|2[0-4][0-9]|25[0-5])$
비교대상이 적으시다면, 문자를 숫자로 바꿔서 영역비교도 가능합니다. 다만, int64를 사용하셔야 간단히 될 겁니다.
int 로 하신다면, if(0xc0a80000 == (ip & 0xffffff00)) // 192.168.0.0 == 192.168.0.* 이런식의 비교가 가능하겠죠. 이런거 원하시는거 맞나요?
emerge moneyhttp://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~http://xenosi.de/
https://xenosi.de/
감사합니다. ^^ 좋은 하루 보내세요
텍스트 포맷에 대한 자세한 정보
<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]
비교대상이 많으면 정규식을 화일에 저장하는 것은 어떻신지요?
POSIX정규식을 사용해 보세요.
#include 를 포함하시고 아래의 함수들을 사용하시면 됩니다.
regcomp, regexec, regfree
예로, "000.000.000.000"에서 "255.255.255.255"까지의 영역이면
^(([0-1][0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-1][0-9]{2}|2[0-4][0-9]|25[0-5])$
"010.001.000.000"에서 "010.001.199.255"까지
^010\.001\.[0-1][0-9]{2}\.([0-1][0-9]{2}|2[0-4][0-9]|25[0-5])$
비교대상이 적으시다면,
문자를 숫자로 바꿔서 영역비교도 가능합니다.
다만, int64를 사용하셔야 간단히 될 겁니다.
int 로
int 로 하신다면,
if(0xc0a80000 == (ip & 0xffffff00)) // 192.168.0.0 == 192.168.0.*
이런식의 비교가 가능하겠죠.
이런거 원하시는거 맞나요?
emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/
https://xenosi.de/
감사합니다.
감사합니다. ^^ 좋은 하루 보내세요
댓글 달기