ソス@ソスソスipソスAソスhソスソスソスXソスソスソスソスソスソスソスソスソスソスソスヌゑソスソスソスソス判定すソスソスノは?
|
ソスEC/C++
ソスEDelphi
ソスEVisual BasicソスソスソスSソスソス
ソス@(VB2-VB6ソスソス.NETソスソスソスp)
ソスEVisual Basic(VB2-VB6)
ソスEVisual Basic .NET
ソスEVisual C++
ソスEpapy's softwarelibrary
ソスWソスLソスソスAソスOソスソスdllソスソスgソスずソスノ趣ソスソスソスソスソスソスソスノはどゑソスソスソスソスソスホよいソスフでゑソスソス蛯、ソスソスソスB
ソスネゑソスソスAソスuソスソスソスソスソスソスソスvソスニゑソスIPv4ソスソスソス[ソスソスソスナ撰ソスソスソスソスソスソスLソスqソスソスソスソストゑソスソス驍ゥソスヌゑソスソスソスソスナゑソスソスソスAソスソスソスYソスzソスXソスgソスネゑソスlソスbソスgソスソスソス[ソスNソスネりがソスソスソスンゑソスソストゑソスソス驍ゥソスヌゑソスソスソスソスヘ問いソスワゑソスソスソスB
ipソスAソスhソスソスソスXソスフ包ソスソスソスソスソス
***.***.***.***
(ソスソス***ソスソス 0ソス`255ソスフ撰ソスソスソスソスソスソスソスソスソス)
ソスノなゑソスソストるかソス判定しソスソスソスソスソスソスソストゑソスソスニ?
ソスヘゑソスソスソスソスソスソスナゑソスソスB
ソスソスソスソスソスYソスソスワゑソスソスソスソスソスソスAdelphi5 + indy10ソスナゑソスソスB
ソスソスソスソスソスソスソスソスソスu.ソスvソスナ包ソスソスソスソスソスソストゑソスソス黷シソスソスフオソスNソスeソスbソスgソスソスソスソスソスソスソスソストゑソスソスソスフでゑソスソスソスソスA
isSafeIP('192.168.0.256') ソスソス False
ソスンゑソスソスソスソスネ包ソスソス@ソスソスソスソスソスソスソスフゑソスソスネと探ソスソスソストゑソスソスワゑソスソスB
ソスソスソスソスソスソスソスソスソスソスソスソスH
inet_addr
ソスソスソスソスソスソスソスソスソスフでゑソスソスソスソスソスフゑソスソスH
ソスEソスEソスEソスソスソスソスソスニ、wsock32.dll ソスソスgソスソスソスソスソスソスAソスソスソスソスソス_ソスソスソスソスソスネ(ソスホ)
inet_addr('192') ソスニゑソスソスソスソスニゑソスソスGソスソスソス[ソスノなゑソスネゑソスソスだゑソス
ソスハゑソス .ソスソス3ソスツゑソスソス驍ゥソスmソスFソスソスソスソスホゑソスソスソスソスフゑソスソスH
>ソスWソスLソスソスAソスOソスソスdllソスソスgソスずソスノ趣ソスソスソスソスソスソスソスノはどゑソスソスソスソスソスホよいソスフでゑソスソス蛯、ソスソスソスB
APIソスヘ全ソスナゑソスソスソスネゑソスソスソスソスH
ソスソスソスソスネ趣ソスソスソスソスソスソスソスソスKソス¥ソスソスソスソス....
ソスニ、ソスソスソスソスソスソスソスcソスJソスGソスソスソスソスネゑソスソスソスソスDソスソスソスナゑソスネゑソスソスソスソスKソス¥ソスソスソスノつゑソスソスト鯉ソスソスソスソストみまゑソスソスソスソスB
ソスソスDelphiソスフ趣ソスVersionソスナは撰ソスソスKソス¥ソスソスLibraryソスヘ標ソスソスソスナ趣ソス闕橸ソスワゑソスソスフゑソスソスネゑソスソスc
ソスソスソスト、ソスソスソスKソス¥ソスソスソスネ外ソスナ趣ソスソスソスソスナ組ソズなゑソス
ソスsソスソスソスIソスhソスナ区分ソスソスソスソスソスソスフゑソスソスソスソスソスソスソス4ソスツのゑソスフに包ソスソスソスソスナゑソスソス驍ゥ
ソスソスソスソスソスト、ソスソスソスソス4ソスツゑソスソスソスソス黷シソス齔ョソスソスソスノなゑソスA0ソス`255ソスナゑソスソス驍ゥソスヌゑソスソスソスソスA
ソス判断ソスソスソスソスニゑソスソスソスソスニゑソスソスソスソスdソスlソスノなゑソスフでゑソスソス蛯、ソスソスソスB
ソスソスソスソスソスフホソス[ソスソスソスyソス[ソスWソスソス
http://delfusa.main.jp/delfusafloor/opensource/delfusalibrary/20070828160200/WordDecompose/WordDecompose.pas.txt
ソスソスソスフゑソスソスソスソスソスソスンて、
WordCountソスソスWordGetソスナピソスソスソスIソスhソスソスdmDelimiterExactlyソスwソス閧オソスソス
4ソスツの要ソスfソスソスソスソスoソスソスソストゑソスソス黷ェTryIntToStrソスニゑソスソスナ撰ソスソスlソスソスソスヌゑソスソスソスソスソスソスfソスソスソスソス
ソスソスソス黷ェ0ソス`255ソスソスソスソスAソスソスソスfソスソスソスソスB
ソスニ、ソスソス閧ュソスソスソスソスソスソスソスソスソスナゑソスソスソスB
ソスlソスソスソスlソスソスソスソスフと難ソスソスソスソス謔、ソスソス
ソスvソスソスソスOソスソスソスソスソスソスgソス゚ゑソスじゑソスネゑソスソスソスソスネ。
>ソスソスソスソスソスソスソスソスソスu.ソスvソスナ包ソスソスソスソスソスソストゑソスソス黷シソスソスフオソスNソスeソスbソスgソスソスソスソスソスソスソスソストゑソスソスソスフでゑソスソスソスソスA
ソスネのででゑソスソストゑソスソスソスだろうソスソスソスヌ一応ソスEソスEソスEソスEソスE
function isSafeIP(IP:String):Boolean;
var
I,J,J2,K : Integer;
begin
Result := True;
if Pos('$',IP) = 0 then
begin
J := 0;
for I:=0 to 3 do
begin
J2 := PosEx('.',IP,J+1);
if J2<>0 then
begin
K := StrToIntDef(Copy(IP,J+1,J2-J-1),256);
end;
if (J2=0) then
begin
if I=3 then
begin
K := StrToIntDef(Copy(IP,J+1,Length(IP)-J),256);
end
else
begin
Result := False;
end;
end;
if (K<0) or (255<K) then Result := False;
J := J2;
end;
end
else
begin
Result := False;
end;
end;
ソスソスソスフソスソスヨ撰ソスソスナは、ソスソスソスソスネソスIPソスナゑソス True ソスノなゑソスH
IP := '0001.0012.0123.000255'; // ソスソスソスソスソスフ鯉ソスソスソスソスRソスソスソスソス闡スソスソス
IP := '12.34.56.78.90.123'; // ソスソスソスソスソスフ撰ソスソスソスソスSソスツゑソス闡スソスソス
IP := '124.083.147.202...'; // ソスソスソスソスソスノ余ソスvソスネドソスbソスg
ソスCソスソス
function isSafeIP(IP:String):Boolean;
var
I,J,J2,K : Integer;
S : String;
begin
Result := True;
if Pos('$',IP) = 0 then
begin
J := 0;
for I:=0 to 3 do
begin
J2 := PosEx('.',IP,J+1);
if J2<>0 then
begin
S := Copy(IP,J+1,J2-J-1);
if Length(S) < 4 then
begin
K := StrToIntDef(S,256);
end
else
begin
Result := False;
end;
end;
if (J2=0) then
begin
if I=3 then
begin
S := Copy(IP,J+1,Length(IP)-J);
if Length(S) < 4 then
begin
K := StrToIntDef(S,256);
end
else
begin
Result := False;
end;
end
else
begin
Result := False;
end;
end;
if (K<0) or (255<K) then Result := False;
J := J2;
end;
if Copy(IP,J,1) = '.' then Result := False;
end
else
begin
Result := False;
end;
end;
ソスソスソスソスソスソスソスソスソスニゑソスソスノは、ソスeソスXソスgソスtソス@ソス[ソスXソスgソスナゑソスソスネ。
//KHE000221ソスソスソスソスソスisSafeIPソスノ必ソスvソスネのゑソス
//ソスソスソスソスPosExソスヨ撰ソスソスソスソスネ?
function PosEx(Substr: string; S: string; P: Integer): Integer;
begin
if P <= 0 then Result := 0
else Result := Pos(Substr, Copy(S, P, Length(S)));
if Result <> 0 then Result := Result + P - 1;
end;
//ソスソスソス黷ェソス`ソスFソスbソスNソスRソス[ソスh
procedure Check(A, B: Boolean);
begin
if not(A = B) then
begin
Assert(False,
'ソスGソスソスソス[ソスナゑソス:A=' + BoolToStr(A) + ':B=' + BoolToStr(B));
end;
end;
//ソスソスソスソスソスナテソスXソスgソスソスソスソスソスソスネゑソスソスソス
//ソスeソスXソスgソスソスハ過ゑソスソスソス謔、ソスソスisSafeIPソスソスソスソスソスソスナゑソスソストゑソスソスソスホよいソスB
procedure TForm1.Button1Click(Sender: TObject);
begin
Check(True, isSafeIP('0.0.0.0'));
Check(True, isSafeIP('255.255.255.0'));
Check(True, isSafeIP('255.255.0.0'));
Check(True, isSafeIP('0.0.0.255'));
Check(True, isSafeIP('192.168.0.1'));
Check(True, isSafeIP('192.168.0.01'));
Check(False, isSafeIP('192.168.0.-1'));
// ソスソスソスソスソスフ鯉ソスソスソスソスRソスソスソスソス闡スソスソス
Check(False, isSafeIP('0192.168.0.1'));
Check(False, isSafeIP('192.168.0000.1'));
Check(False, isSafeIP('192.168.0.0001'));
Check(False, isSafeIP('0001.0012.0123.000255'));
//ソスソスソスソスソス]ソスソス
Check(True, isSafeIP('192.02.03.04'));
Check(False, isSafeIP('0192.02.03.04'));
Check(True, isSafeIP('01.02.03.04'));
// ソスソスソスソスソスフ撰ソスソスソスソスSソスツゑソス闡スソスソス
Check(False, isSafeIP('12.34.56.78.90'));
Check(False, isSafeIP('12.34.56.78.90.123'));
// ソスソスソスソスソスノ余ソスvソスネドソスbソスg
Check(False, isSafeIP('124.083.147.202..'));
Check(False, isSafeIP('124.083.147.202...'));
//ソス謫ェソスノ余ソスvソスネドソスbソスg
Check(False, isSafeIP('.124.083.147.202'));
//ソスソスソスlソスソスソスネゑソスソスソスソスソスソスソスソスソスソスソス
Check(False, isSafeIP('.0.0.1'));
Check(False, isSafeIP('0.0..1'));
//ソスソスソスlソスソスソスヘ囲外
Check(False, isSafeIP('256.255.255.0'));
Check(False, isSafeIP('255.255.0.256'));
//ソスソスソスlソスソスソスソスネゑソスソスlソスソスソスソスソスソスソストゑソスソスソス
Check(False, isSafeIP('0.0F.0.255'));
Check(False, isSafeIP('0.0x0F.0.255'));
Check(False, isSafeIP('0.$0F.0.255'));
end;
ソスソスソスフテソスXソスgソスソスハ過ゑソスソストゑソスソス驍アソスニゑソスソスA
isSafeIPソスフ関撰ソスソスdソスlソスソスソスソスソスソストゑソスソスソスフゑソス
ソスヌゑソスソスソスソスソスソスソスソスソスソスソスisSafeIPソスナ具ソスソスeソスソスソスソス驍ゥソスロゑソスソスソスソスソスソスソスソスかソス驍オ
isSafeIPソスソスソスソスtソス@ソスNソス^ソスソスソスソスソスOソスソスソスト難ソスソスソスソスソスソスソスソスソスマ更ソスノなゑソスソストゑソス
ソスソスソスフテソスXソスgソスソスソスハゑソスホ、ソスdソスlソスソスンゑソスソスソスソストゑソスソスソスヨ撰ソスソスニゑソスソスソスソスソスソスニになゑソスワゑソスソスB
ソスソスソスisSafeIPソスナはエソスソスソス[ソスソスソスNソスソスソス驍オ
ソスソスソスソスisSafeIPソスナは撰ソスソスソスソスソスソスソスソスしソストゑソスソス驍アソスニゑソスmソスFソスソスソスワゑソスソスソスソスB
ソスuソスソスソスソスソス]ソスソスソスvソスフ擾ソスソスフ費ソスソスソスソスネ仕ソスlソスネんかゑソス
ソスlソスヤとゑソスソストはどゑソスソスソスソスナゑソスソスソスソスソスCソスソスソスソス驍ッソスソス
ソスソスソスソスソスソスソスヘテソスXソスgソスナチソスFソスbソスNソスソスソストゑソスソスソスソスネゑソスソスニ、ソスかソスソスネゑソスソスネ。
ソスハ費ソスソスソスソスソスソスネので趣ソスソスソスソスソスソストみまゑソスソスソスソスB
# Check(False, isSafeIP('0.$0F.0.255'));
# ソスナ茨ソスソスソスソス|ソスソスソスソスワゑソスソスソス(^^;A
function isSafeIP(IP: String): Boolean;
var
i: Integer;
Stream: TStringStream;
Parser: TParser;
iValue: Int64;
Source: String;
begin
result := False;
Source := StringReplace(IP,'.',#$FF,[rfReplaceAll]);
Stream := TStringStream.Create(Source);
try
Parser := TParser.Create(Stream);
try
for i:=0 to 6 do
begin
if ODD(i) then
begin
if Parser.TokenString <> #$FF then
Exit;
end
else
begin
if Parser.Token <> toInteger then
Exit;
if Length(Parser.TokenString) > 3 then
Exit;
iValue := Parser.TokenInt;
if not (iValue in [0..255]) then
Exit;
end;
Parser.NextToken;
end;
if Parser.Token <> toEOF then
Exit;
result := True;
finally
Parser.Free;
end;
finally
Stream.Free;
end;
end;
ソスソスソスソスソス轤ュソスA0x0Fソスヘ撰ソスソスlソスソスソスソスネゑソスソスAソスニ費ソスソスfソスソスソスソストゑソスソスソスフではなゑソスソスソス
4ソスソスソスソスソスネ上かソスヌゑソスソスソスソスフ費ソスソスfソスナはねゑソスソストゑソスソスソスフでゑソスソス蛯、ソスB
TryStrToIntソスナゑソス0x0Fソスソス$0FソスソスTrueソスソスソスヤゑソスワゑソスソスソスB
ソスソスソスニは、ソスソスソスソス0ソスソスソスtソスソスソストゑソスソスソスニ、WindowsソスソスPingソスネどでゑソス
8ソスiソスソスソスソスソスニ鯉ソスソスソスソスソスソスフで、ソスCソスソスツゑソスソスソスソスルゑソスソスソスソスソスソスソスソスソスソスソスソスソスソスワゑソスソスソスヒ。
ソスソスソスネゑソスAソスソスソスノ余ソスソスソスソス0ソスソスソスソスソスソス鼾ソスヘエソスソスソス[ソスノゑソスソス驍アソスニにゑソスソスソス
ソスソスソスソスソスソスソス驍ゥソスネゑソス
function isSafeIP(IP:String):Boolean;
var
slBuffer : TStringList;
i,j : Integer;
begin
Result := True;
slBuffer := TStringList.Create;
try
slBuffer.Delimiter := '.';
slBuffer.DelimitedText := IP;
// ソスソスソスフチソスFソスbソスN
if Not(slBuffer.Count = 4) then
Result := False
else
// ソスソスソスソスソスソスソスヌゑソスソスソスソスフチソスFソスbソスN
for i:=0 to 3 do
if Not(TryStrToInt(slBuffer.Strings[i],j)) then
Result := False
else
// ソスソスソスlソスヘ囲のチソスFソスbソスN
if Not(j in [0..255]) then
Result := False
else
// ソスソスソスlソスニ包ソスソスソスソスソスフ撰ソスソスソスソス`ソスFソスbソスN
if Not(IntToStr(j)=slBuffer.Strings[i]) then
Result := False;
finally
slBuffer.Free;
end;
end;
ソスソスソスソスノゑソスソスヘーソスB
ソスソスソスソスソスソスソスソスソスbソスソスヘ楽ソスソスソスソスソスナゑソスソスヒ。
> # Check(False, isSafeIP('0.$0F.0.255'));
> # ソスナ茨ソスソスソスソス|ソスソスソスソスワゑソスソスソス(^^;A
ソスソスソスソスノ茨ソスソスソスソスソスソスソスソスソスニゑソスソスソスソスソス
isSafeIP('0.$0F.0.255')
ソスソスFalseソスソスヤゑソスソスAソスニゑソスソスソスソスdソスlソスノゑソスソス驍ゥ
TrueソスソスヤゑソスソスAソスニゑソスソスソスソスdソスlソスノゑソスソス驍ゥソスソス
ソス成ソスメの趣ソスソスRソスソスソスニ思ソスソスソスワゑソスソスB
ソス皷橸ソスAソスeソスXソスgソスRソス[ソスhソスニゑソスソストゑソスソスQソスlソスソスソスソスソスソスソスソスソスB
StrToIntソスヘ鯉ソスソス¥ソスsソスvソスcソスネ仕ソスlソスナゑソスソスソス
0x0Fソスソス$0Fソスソスソスソスlソスニゑソスソスト返ゑソスソストゑソスソスソスソスソスナゑソスソスソスヒ。
> ソスソスソスネゑソスAソスソスソスノ余ソスソスソスソス0ソスソスソスソスソスソス鼾ソスヘエソスソスソス[ソスノゑソスソス驍アソスニにゑソスソスソス
ソスソスソスソスAソスソスソスソスソスソスソスソスソスソスソスソスヒ〜ソスB
ソスソスソスソスノゑソスソスヘ。
ソスソスソスソスAisSafeIPソスソスソスソスソストみまゑソスソスソスソスB
function isSafeIP(IP:String):Boolean;
var
i, Val: Integer;
begin
Result := False;
with TWordDecompose.Create('.', IP, dmDelimiterExactly) do try
//ソスソスソスソスソスソスソスvソスfソスソスソスソスソスソスソスソスソスソス4ソスナゑソスソス驍アソスソス
if Count <> 4 then Exit;
for i := 0 to 3 do
begin
//ソスソスソスvソスfソスソスソス文趣ソスソスソスソスソスネゑソスソスソスソスソス
if Words[i] = '' then Exit;
//ソスソスソスvソスfソスソスソスソスソスソス(0ソス`9)ソスナ出ソスソスソストゑソスソス驍アソスソス
if CheckStrInTable(Words[i], hanNumberTbl) <> itAllInclude then Exit;
//ソスソス2ソスソスソスソスソスネ上あソスソスソスト先頭ソスソス0ソスソスソスソスネゑソスソスソスソスソス
if (2 <= Length(Words[i])) and (AnsiPos('0', Words[i])=1) then Exit;
//ソスソスStrToIntソスナ撰ソスソスlソスマ奇ソスソスナゑソスソス驍アソスソス
if not TryStrToInt(Words[i], Val) then Exit;
//ソスソスソスヘ囲ゑソス0ソス`255ソスナゑソスソス驍アソスソス
if not CheckRange(0, Val, 255) then Exit
end;
Result := True;
finally Free; end;
end;
TWordDecomposeソスヘ、ソスソスソスソスソスソスソス謨ェソスソスソスソスNソスソスソスXソスASplitソスヨ撰ソスソスンゑソスソスソスソスネゑソスソス
CheckStrInTableソスヘ包ソスソスソスソスがテソス[ソスuソスソスソスノ含まゑソストゑソスソス驍ゥソスヌゑソスソスソスソスソスソスfソスソスソスソスヨ撰ソス
CheckRangeソスヘ範囲を調べゑソスヨ撰ソス
DelFusa Library - Delphi OpenSource - DelFusa Floor
http://delfusa.main.jp/delfusafloor/opensource/delfusa_library_f.html
ソスネ会ソスソスAソスソスソスフようソスネテソスXソスgソスRソス[ソスhソスハ過ゑソスソストまゑソスソスB
procedure TForm1.Button1Click(Sender: TObject);
begin
Check(True, isSafeIP('0.0.0.0'));
Check(True, isSafeIP('1.2.3.4'));
Check(True, isSafeIP('255.255.255.0'));
Check(True, isSafeIP('255.255.0.0'));
Check(True, isSafeIP('0.0.0.255'));
Check(True, isSafeIP('192.168.0.1'));
Check(False, isSafeIP('192.168.0.-1'));
// ソスソスソスソスソスフ鯉ソスソスソスソスRソスソスソスソス闡スソスソス
Check(False, isSafeIP('0192.168.0.1'));
Check(False, isSafeIP('192.168.0000.1'));
Check(False, isSafeIP('192.168.0.0001'));
Check(False, isSafeIP('0001.0012.0123.000255'));
//ソスソスソスソスソス]ソスソスソスソスソスdソスlソスノゑソスソスソスト変更ソスソスソスソス
Check(False, isSafeIP('192.168.0.01'));
Check(False, isSafeIP('192.02.03.04'));
Check(False, isSafeIP('0192.02.03.04'));
Check(False, isSafeIP('01.02.03.04'));
// ソスソスソスソスソスフ撰ソスソスソスソスSソスツゑソス闡スソスソス
Check(False, isSafeIP('12.34.56.78.90'));
Check(False, isSafeIP('12.34.56.78.90.123'));
// ソスソスソスソスソスノ余ソスvソスネドソスbソスg
Check(False, isSafeIP('124.083.147.202..'));
Check(False, isSafeIP('124.083.147.202...'));
//ソス謫ェソスノ余ソスvソスネドソスbソスg
Check(False, isSafeIP('.124.083.147.202'));
//ソスソスソスlソスソスソスネゑソスソスソスソスソスソスソスソスソスソスソス
Check(False, isSafeIP('.0.0.1'));
Check(False, isSafeIP('0.0..1'));
//ソスソスソスlソスソスソスヘ囲外
Check(False, isSafeIP('256.255.255.0'));
Check(False, isSafeIP('255.255.0.256'));
//ソスソスソスlソスソスソスソスネゑソスソスlソスソスソスソスソスソスソストゑソスソスソス
Check(False, isSafeIP('0.0F.0.255'));
Check(False, isSafeIP('0.0x0F.0.255'));
Check(False, isSafeIP('0.$0F.0.255'));
end;
ソスソスソスソストみゑソスソス
ソスンなゑソスソスソスフ趣ソスソスソスソスAソスQソスlソスノなゑソスワゑソスソスヒ。
StrToIntソスソスソスソスsソスソスソストゑソスソスソスA
IntToStrソスソスソスソスsソスソスソスト難ソスソスソスソスソスソスヌゑソスソスソスソスソスソスソスソスソストのゑソス
ソス謫ェソスソスソスソスソスソスソス[ソスソスソスニゑソスソスAソスSソスソスソスフ包ソスソスソスソスソス0ソス`9ソスノなゑソスソストゑソスソスソスニゑソスソスソス
ソスソスソスfソスソスソスソスKソスvソスソスソスネゑソスソスネゑソスフゑソス
ソスかソスソス竄キソスソスソスソスソスソスソスソスソス`ソスFソスbソスNソスナゑソスソスワゑソスソスヒ。
ソスソスソスtソス@ソスNソス^ソスソスソスソスソスOソスA
ソスツまゑソスAソスヨ撰ソスソスフ抵ソス`ソスヘ変ゑソスソスソスソスノ難ソスソスソスソスソスソスソスソスソスソスソスニ鯉ソスソスソスソス謔ュソスかソスソス竄キソスソス
ソスHソスvソスソスソストみまゑソスソスソスソスB
ソスソスソスLソスナゑソスeソスXソスgソスRソス[ソスhソスソスハ過ゑソスソストゑソスソスワゑソスソスB
function isSafeIP(IP:String):Boolean;
var
i, Val: Integer;
begin
Result := False;
with TWordDecompose.Create('.', IP, dmDelimiterExactly) do try
if Count <> 4 then Exit;
for i := 0 to 3 do
begin
if Words[i] = '' then Exit;
if not TryStrToInt(Words[i], Val) then Exit;
if not (Val in [0..255]) then Exit;
if not (Words[i]=IntToStr(Val)) then Exit;
end;
Result := True;
finally Free; end;
end;
ソスネゑソスルど、ResultソスソスFalseソスノゑソスソストゑソスソスソスソスソスExitソスソスソストゑソスソスソスソスホゑソスソス黷アソスソスソスソスソス驍オ
ソス]ソスvソスネ費ソスソスfソスソスソス[ソスvソスソスソスソスソスネゑソスソスネゑソスワゑソスソスヒ。ソス@ソスQソスlソスノなゑソスワゑソスソスB
ソスナゑソスAソスソスソスソスソスワで暦ソスソスト、ソスCソスソスソスtソスソスソスワゑソスソスソスソスB
> ソスソスソスソスソスYソスソスワゑソスソスソスソスソスソスAdelphi5 + indy10ソスナゑソスソスB
TryStrToIntソスヨ撰ソスソスソスIfソスソスソスソスinソスソスソスZソスqソスソスソスネゑソスソス謔、ソスネ気ソスソスソスcorz
> ソスソスソスソスソスソスソスソスソスu.ソスvソスナ包ソスソスソスソスソスソストゑソスソス黷シソスソスフオソスNソスeソスbソスgソスソスソスソスソスソスソスソストゑソスソスソスフでゑソスソスソスソスA
ソスソスソスソスソスソスト鯉ソスソスソスソスソスソスソスソスソスソスソスネゑソスソスニゑソスソスソスソスソスソスニでゑソスソスソスホ、ソスソスソスフ包ソスソスソスソスソスソスOソス黷ソソスソスソスソストまゑソスソスヒ。
ソスvソスソスソスOソスソスソスソスソスヘ短ソスソスソスソスソスヌ、ソスソスソスソストるこソスニはまゑソスソスノゑソスソスソスcorz
ソスソスソスソスソスフテソスNソスjソスbソスNソスTソスCソスgソスノ擾ソスソスソスソスソスソストゑソス轤「ソスワゑソスソスソスソスB
ソスソスうソスニ思ソスソスソスソス
TryStrToIntソスソスCanStrToIntソスニゑソスソスソスソスフゑソスソスソスソスソスナヒソスbソスgソスソスソスソスソスソス
ソスソスソスソスソスソスQソスlソスノゑソスソスソスソスソスA
inソスソスソスZソスqソスフとゑソスソスソスヘ、(0 <= Val) and (Val <= 255)ソスノゑソスソストゑソス轤「ソスワゑソスソス蛯、ソスB
ソスソスソスワゑソスソスソスナゑソスソスソスソスAwisockソスソスinet_addrソスソス
IsSafeIPソスヨ撰ソスソスナソスソスbソスvソスソスソスト抵ソスソスソスソスソスソストみまゑソスソスソスソスB
Check(False, IsSafeIP('0192.168.0.1'));
ソスネゑソスソスソスソスAソスソスソス黷ェIPソスニゑソスソスト認ソス゚ゑソスソストなゑソスソスフに、
Check(True, IsSafeIP('0001.0012.0123.000255'));
ソスソスソスソスソスIPソスニゑソスソスト認ソス゚ゑソスソスソスB
Check(True, IsSafeIP('0.0x0F.0.255'));
ソスワゑソスソスソスソスAソスソスソスソスワゑソスIPソスAソスhソスソスソスXソスニゑソスソスト具ソスソスeソスソスソスソスニは…
[WinSock.pas]ソスソスソスソスフゑソスソスソスソスソスソスソスソス謔、ソスソス
Check(True, IsSafeIP('192'));
ソスcソスミどゑソスソスc
----------
//uses Winsockソスソスヌ会ソス
function IsSafeIP(IP:String):Boolean;
var
InAddr: TInAddr;
begin
InAddr.S_addr := inet_addr(PChar(IP));
if InAddr.S_addr = INADDR_NONE then
begin
Result := False;
end else
begin
Result := True;
end;
end;
ソスソスソス黷シソスソスソスApingソスソスソストみゑソスニどゑソスソスマ奇ソスソスソスソスソストゑソスソス驍ゥソスかソスソスソスト面費ソスソスソスソスナゑソスソスソスB
ex)ping 192 -> ping 0.0.0.192
0192ソスソスソスソスソス゚なのは、8ソスiソスソスソスソス9ソスソスソスソスソスンゑソスソスネゑソスソスソスソスソスナゑソスソスヒ。(ソスソス)
0162ソスネゑソスnソスjソスソスソスソスソスソスソス閧キソスソスフゑソスソスソスソスソスソスgソスナゑソスソスB
ソスソスソスソスソスソス0xソス頭につゑソスソスソスホ、16ソスiソスソスソスナ変奇ソスソスソスソスソスワゑソスソスB
ソスソスソスソスソスソスソスソスソスモ厄ソスソスナは、(Windowsソスソスナゑソス)WinsockソスソスソスソスソスソスソスソスソスフゑソスソスネゑソスソスB