On-line: Alex_Cher, гостей 2. Всего: 3 [подробнее..]
АвторСообщение
администратор




Пост N: 4022
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.05.14 18:28. Заголовок: Валидность ввода IP адреса


Нет ли чего то готового что бы самопал не писать ?
Ну что бы такие не верные адреса проверять:
123.234.1
DDD.145.1.1
555.345.456.123

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 8 [только новые]


постоянный участник


Пост N: 973
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 21.05.14 21:05. Заголовок: IPv4 - не проблема н..


IPv4 - не проблема написать самопал. Каждая из 4-х частей - число от 0 до 255. Этого, имхо, достаточно. А вот IPv6... :)

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4023
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.05.14 21:09. Заголовок: PSP пишет: IPv4 - н..


PSP пишет:

 цитата:
IPv4 - не проблема написать самопал


Так и сделаю :)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3388
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.05.14 21:24. Заголовок: Смотри примеры в :&#..


Смотри примеры в :\MiniGUI\SAMPLES\BASIC\IPADDRESS

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4045
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.05.14 14:55. Заголовок: Наваял на скорую вот..


Наваял на скорую вот такой исходничек по проверке IP адреса.
 

Func isValidIPadress(Cip)
local ret:=.t.
local n

n:=numtoken(Cip,".")
if n#4
return .f.
endif

For n=1 to 4

if !isdigit(token(Cip,".",n))
return .f.
endif

if val(token(Cip,".",n))<0 .or. val(token(Cip,".",n))>255
return .f.
endif

Next
return ret


Что скажете ?
PS
Если можно проще сделать покажите как.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 285
Зарегистрирован: 16.12.08
ссылка на сообщение  Отправлено: 27.05.14 16:55. Заголовок: Можна попробовать С ..


Можна попробовать С вариант (3 функции):

 
//#include "hmg.ch"

REQUEST HB_GT_WIN_DEFAULT

Function main()
Local dd:= "192.168.22.322"
dd1:="192.168.22.122"

if (VALIDADDRESS(dd) == 1)
? "true"
else
? "false"
endif
if (ISVALIDIPADDRESS(dd1) < 0)
? "false"
else
? "true"
endif


wait

Return .T.

#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"

HB_FUNC( VALIDADDRESS )
{
int _retData = 1;
const char * address = (const char*) hb_parc( 1 );
if (address == NULL || address == '\0') hb_retni((int) 0);

int nibble, octets = 0, flag = 0;;

char* holder = (char*)malloc(strlen(address)+1);
strcpy(holder, address);
char* byte = strtok(holder, ".");

while(byte != NULL)
{
octets++;
if (octets > 4)
{
flag = 1;
break;
}
nibble = atoi(byte);
if ((nibble < 0) || (nibble > 255))
{
flag = 1;
break;
}
byte = strtok(NULL, ".");
}
free(holder);
if(flag || octets < 4) hb_retni((int) 0);
else hb_retni((int) 1);
}
/*
int isValidIpAddress_c(const char *ipAddress)
{
struct sockaddr_in sa;
return inet_pton(AF_INET, ipAddress, &(sa.sin_addr));
}
*/

HB_FUNC( ISVALIDIPADDRESS)
{
register const char* pos = (const char*) hb_parc( 1 );
register unsigned char ch = *pos;
register unsigned short count = 0;

if (NULL == pos) hb_retni((int) 0);

while (ch != NULL)
{
if (!((ch >= '0' && ch <= '9') || ch == '.')) hb_retni((int) 0);
if (ch == '.')
if (++count > 3) hb_retni((int) 0);
ch = *++pos;
}
if (count == 3 && *--pos != '.') hb_retni((int) 1);
hb_retni((int) 0);
}

#pragma ENDDUMP


Функция isValidIpAddress работает но не на всех компиляторах.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4047
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.05.14 16:58. Заголовок: santy пишет: Функци..


santy пишет:

 цитата:
Функция isValidIpAddress работает но не на всех компиляторах


Да сработало на MINGW. Спасибо за еще один вариант проверки.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 286
Зарегистрирован: 16.12.08
ссылка на сообщение  Отправлено: 27.05.14 17:28. Заголовок: santy пишет: /* int..


santy пишет:

 цитата:
/*
int isValidIpAddress_c(const char *ipAddress)
{
struct sockaddr_in sa;
return inet_pton(AF_INET, ipAddress, &(sa.sin_addr));
}
*/



Я имел ввиду вот эту функцию. Дима попробуйте у себя может пройдёт. НЕ у всех есть inet_pton.



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4048
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.05.14 17:32. Заголовок: santy пишет: Я имел..


santy пишет:

 цитата:
Я имел ввиду вот эту функцию


Да с ней не собирается.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 165
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет