子网地址的算法:用IP地址 AND 子网掩码
IP地址与子网掩码进行和运算.
广播地址的算法:( NOT 子网掩码) OR IP地址
子网掩码进行非运算的结果再与IP地址进行或运算。
class function TConvertUtil.SubnetRange(AIpMask, AIpStart: string;
var ARefIpStart, ARefIpEnd: string): Boolean;
var
ASubNetIpLong,ABroadCastIpLong:LongWord;
AStartLong,AEndLong:LongWord;
begin
Result := True;
ASubNetIpLong := FCnIp.IPToInt(AIpMask) and FCnIp.IPToInt(AIpStart);
ABroadCastIpLong := (not FCnIp.IPToInt(AIpMask)) or FCnIp.IPToInt(AIpStart);
AStartLong := ASubNetIpLong + 1;
AEndLong := ABroadCastIpLong - 1;
ARefIpStart := FCnIp.IntToIP(AStartLong);
ARefIpEnd := FCnIp.IntToIP(AEndLong);
end;
initialization
FCnIp := TCnIp.Create(nil);
finalization
FCnIp.Free;