제목 |
96 번 글의 답장글 : [MYSQL] INET_ATON(), INET_NTOA() |
이름 |
산이 [홈]http://linuxchannel.net/ |
INET_ATON(): // Address TO Number
INET_NTOA(); // Number TO Address
number 형태로 DB 에 저장되어 있을 경우
UPDATE table SET
ipto = INET_NTOA
( ipfrom + INET_ATON('255.255.255.255') - ipto ),
ipfrom = INET_NTOA(ipfrom)
;
*주)
이와 같이 계산순서상 ipto 을 먼저 update 해야함
------------------------
시작주소와 마지막주소를 알고 있을 경우 넷매스크 계산
*계산방법)
256 - ( 마지막주소 + 1 - 시작주소)
= 시작주소 + (256 - 마지막주소 - 1)
= 시작주소 + (255 - 마지막주소)
or
/32 - bit( 마지막주소 + 1 - 시작주소)
예)
- 시작 주소 : 211.36.160.0
- 마지막주소 : 211.36.163.255
SQL)
SELECT INET_NTOA
(
INET_ATON('211.36.160.0')
+
INET_ATON('255.255.255.255')
-
INET_ATON('211.36.163.255')
);
// 결과 255.255.252.0
or
SELECT INET_NTOA
(
0xffffffff
^
INET_ATON('211.36.160.0')
^
INET_ATON('211.36.163.255')
);
http://phpschool.com/bbs2/inc_view.html?id=10144&code=tnt2
PHP 경우
function inet_aton($ipaddr)
{
return sprintf('%u',ip2long($ipaddr));
}
function inet_ntoa($base)
{
return long2ip($base);
}
function is_subnet($some)
{
if(preg_match('/^[\d]+\.[\d]+\.[\d]+\.[\d]+$/',$some))
{
$some = sprintf('%u',ip2long($some));
}
$dec = abs($some);
$bits = decbin($dec);
return (boolean)preg_match('/^[1]+[0]*$/',$bits);
} |
2004년 01월 24일 01:21:40 토(새벽) from 61.254.130.225 |
|