IP合法性判断 lua实现

前端界面

假设前段传下来的IP地址格式是合法的。
IP合法性判断:
xxx.xxx.xxx.xxx == > ip1.ip2.ip3.ip4
1.ip1的范围必须在[1,223]之间
2.IP不能为广播地址

步骤:
1.先判断子网掩码的合法性。
将子网掩码拆分成二进制形式表示的字符串
如255.255.254.0的二进制表示
11111111 11111111 11111110 00000000
左边的’1’中不能有0,右边的’0’中不能有1
2.判断IP的前8位是否在[1,223]之间, 如果不在范围内,则报错。
3.判断IP是否是广播地址
IP地址的与子网掩码相与,如果刚好等于255.255.255.255,则说明是广播地址,报错。

-- 查找.
local function finddot(str)
	local DOT = string.byte('.')
	local len = string.len(str)
	local i = 1
	while i < len
	do
		local ch = string.sub(str, i, i)
		local ch_by = string.byte(ch)
		if ch_by == DOT then
			return i
		end
		i = i + 1
	end
	return nil
end

-- 拆分IP地址
local function split_ipaddr(ipaddr)
	local ip_tbl = {
   }

	if type(ipaddr) ~= "string" then
		return nil
	end

	while true
	do
		local pos = finddot(ipaddr)
		if pos ~= nil then
			local ip = string.sub(ipaddr, 0, pos - 1)
			if ip ~= nil and ip ~= "" then
				local ip_num = tonumber(ip)
				table.insert
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值