ip地址大小比较(20分)

  • 主题发起人 主题发起人 luogt
  • 开始时间 开始时间
L

luogt

Unregistered / Unconfirmed
GUEST, unregistred user!
在Delphi6中如何比较IP地址大小?
 
ip怎么比大小?
 
如何把IP地址转换成32位IP地址?
 
是比较IP地址类型吗
 
apple001,你好,你没有理解到意思?
我在程序中设置了一个IP地址范围,例如192.168.0.1-192.168.1.1等等,根据这范围作
循环,对每个IP地址进行处理,该怎么办?
 
就是十进制转化成2进制
1 1 1 1 1 1 1 1 (八位二进制)
128 64 32 16 8 4 2 1 (转化成十进制)
例如:
192.168.7.1
11000000.10101000.00000111.00000001

 
我还是没搞懂!你在做哪方面的东西?
 
UpdateVer,LoaclVer分别为二个IP

function CompareIP(UpdateVer: string; LocalVer: string): Boolean;
var
uver, lver: Integer;
begin
if Pos('.', UpdateVer) > 0 then
uver := StrToInt(Copy(UpdateVer, 1, Pos('.', UpdateVer) - 1))
else
uver := StrToInt(UpdateVer);
if Pos('.', LocalVer) > 0 then
lver := StrToInt(Copy(LocalVer, 1, Pos('.', LocalVer) - 1))
else
lver := StrToInt(LocalVer);

if uver > lver then
begin
Result := True;
Exit;
end
else
if uver < lver then
begin
Result := False;
Exit;
end;

if Pos('.', UpdateVer) = 0 then
begin
Result := False;
Exit;
end;

Delete(UpdateVer, 1, Pos('.', UpdateVer));
Delete(LocalVer, 1, Pos('.', LocalVer));

Result := CompareIP(UpdateVer, LocalVer);
end;
 

我也写过这样的东西,不过我做的时候只允许用户这样操作:输入第一个ip后,第二个ip地址的前两个字节就是第一个ip的前两个字节。比如用户输入第一个ip为:192.168.0.2,那么第二个只能输入:192.168.XX.XX 了.在我的程序中这样也够了。不知道是不是符合你的要求。
 
现在的算法是,先将IP转换成整数.我们取名为IP2INT
例如一个IP地址为: 1.2.3.4
那么这个整数是
VAR I:INTEGER;
PBYTE(@I)^:=4;
PBYTE(@i+1)^:=3;
PBYTE(@i+2)^:=2;
PBYTE(@i+3)^:=1;
上面这一段到底是什么意思?尤其是PBYTE(@I)^:=4;好象在delphi5中没有PBYTE这个指针类型?
 

Similar threads

后退
顶部