JavaScript: IP в одной из этих подсетей?

Я использовал сервер Wamp. Я пытался использовать

c:\wamp\bin\mysql\mysql5.5.8\bin\mysqldump -uroot -p db_name > c:\somefolder\filename.sql

root - мое имя пользователя для mysql, и если у вас есть какой-либо пароль, укажите его с помощью:

-p[yourpassword]

Надеюсь, что он работает.

16
задан Steve 2 February 2009 в 12:52
поделиться

2 ответа

Лучший подход является использованием IMO побитовых операторов. Например, 123.123.48.0/22 представляет (123<<24)+(123<<16)+(48<<8)+0 (=2071670784; это могло бы быть отрицательным числом) как числовой IP-адрес на 32 бита, и -1<<(32-22) =-1024 как маска. С этим, и аналогично, Ваш тестовый IP-адрес, преобразованный в число, можно сделать:

(inputIP & testMask) == testIP

, Например, 123.123.49.123 находится в том диапазоне, как 2071671163 & -1024 2071670784

Так, вот некоторые функции инструмента:

function IPnumber(IPaddress) {
    var ip = IPaddress.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);
    if(ip) {
        return (+ip[1]<<24) + (+ip[2]<<16) + (+ip[3]<<8) + (+ip[4]);
    }
    // else ... ?
    return null;
}

function IPmask(maskSize) {
    return -1<<(32-maskSize)
}

тест:

(IPnumber('123.123.49.123') & IPmask('22')) == IPnumber('123.123.48.0')

урожаи true.

В случае, если Ваша маска находится в формате '255.255.252.0', затем можно использовать функцию IPnumber для маски, также.

23
ответ дан 30 November 2019 в 16:58
поделиться

Преобразуйте более низкий IP и верхний IP в диапазоне к целым числам и сохраните диапазон в дб, затем удостоверяются, что оба столбца индексируются.

Первое, что пришло на ум (псевдо код):

function ipmap(w,x,y,z) {
  return 16777216*w + 65536*x + 256*y + z;
}

var masks = array[ipmap(128,0,0,0), ipmap(196,0,0,0), ..., ipmap(255,255,255,255)]

function lowrange(w, x, y, z, rangelength) {
  return ipmap(w, x, y, z) & masks[rangelength]
}

function hirange(w, x, y, z, rangelength) {
  return lowrange(w, x, y, z, ,rangelength) + ipmap(255,255,255,255) - masks[rangelength];
}

, Который должен сделать это.

, Чтобы найти, падает ли конкретный IP в каком-либо из диапазонов, преобразуйте его в целое число и сделайте:

SELECT COUNT(*) FROM ipranges WHERE lowrange <= 1234567 AND 1234567 <= highrange

оптимизатор запросов должен смочь ускорить это значительно.

2
ответ дан 30 November 2019 в 16:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: