记录 易语言 正则获取ip

.版本 2


.子程序 _按钮1_被单击
.局部变量 网页内容, 文本型
.局部变量 i, 整数型
.局部变量 采集的网址, 文本型, , "0"
.局部变量 采集条数, 长整数型




重定义数组 (ip, 假, 0)
采集的网址 = 分割文本 (编辑框1.内容, #换行符, )
.计次循环首 (取数组成员数 (采集的网址), i)
    .如果真 (删全部空 (采集的网址 [i]) ≠ “”)
        操作_写操作状态 (“正在获取网址[” + 到文本 (i) + “]内容”)
        网页内容 = 到文本 (网页_访问 (采集的网址 [i]))
        .如果 (网页内容 ≠ “”)
            采集条数 = 采集条数 + 正则_把采集网页整理 (网页内容)
        .否则
            操作_写操作状态 (“获取网址[” + 到文本 (i) + “]内容 失败!”)
        .如果结束


    .如果真结束


.计次循环尾 ()
' 网页内容 = 编辑框1.内容
操作_写操作状态 (“正在采集 手动采集网页文本内容”)




采集条数 = 采集条数 + 正则_把采集网页整理 (编辑框2.内容)




操作_写操作状态 (“完成!共采集了[” + 到文本 (采集条数) + “]条IP”)






.子程序 正则_把采集网页整理, 整数型
.参数 网页内容, 文本型
.局部变量 l_ip, ip
.局部变量 正则, 正则表达式类
.局部变量 采集条数, 整数型
.局部变量 i, 整数型


网页内容 = 正则_去除不必要标签 (网页内容)
正则.创建 (“[\s\S]*?(\d+\.\d+\.\d+\.\d+)[\s\S]*?(\d{2,4})”, 网页内容)
.计次循环首 (正则.取匹配数量 (), i)
    采集条数 = 采集条数 + 1
    l_ip.ip = 正则.取子匹配文本 (i, 1)
    l_ip.端口 = 正则.取子匹配文本 (i, 2)
    加入成员 (ip, l_ip)
.计次循环尾 ()
返回 (采集条数)


.子程序 正则_去除不必要标签, 文本型
.参数 文本, 文本型
.局部变量 正则, 正则表达式类
.局部变量 a, 文本型
.局部变量 i, 整数型
.局部变量 已经替换的, 文本型, , "0"
.局部变量 i2, 整数型


正则.创建 (“<td.*?>”, 文本, 真, 真, 真)
' a = 正则.替换 (“a”)
.计次循环首 (正则.取匹配数量 (), i)
    .如果真 (是否是重复替换文本 (已经替换的, 正则.取匹配文本 (i)) = 假)


        加入成员 (已经替换的, 正则.取匹配文本 (i))
    .如果真结束


.计次循环尾 ()
.计次循环首 (取数组成员数 (已经替换的), i)


    文本 = 子文本替换 (文本, 已经替换的 [i], , , , 真)
.计次循环尾 ()
返回 (文本)


.子程序 是否是重复替换文本, 逻辑型
.参数 数组, 文本型, 数组
.参数 判断内容, 文本型
.局部变量 i, 整数型


.计次循环首 (取数组成员数 (数组), i)
    .如果真 (数组 [i] = 判断内容)
        返回 (真)
    .如果真结束


.计次循环尾 ()
返回 (假)


.子程序 规范表达式, 文本型
.参数 文本, 文本型


返回 (子文本替换 (文本, #引号, “\x22”, , , 真))


.子程序 检查ip, 逻辑型
.参数 ipx, 文本型
.局部变量 a, 文本型, , "0"


a = 分割文本 (ipx, “.”, )
.判断开始 (取数组成员数 (a) = 4)
    .如果真 (取文本长度 (a [1]) > 3 或 取文本长度 (a [2]) > 3 或 取文本长度 (a [3]) > 3 或 取文本长度 (a [4]) > 3 或 到整数 (a [1]) = 0)
        返回 (假)
    .如果真结束
    .如果真 (到整数 (a [1]) = 0)
        返回 (假)
    .如果真结束
    返回 (真)
.默认
    返回 (假)
.判断结束






.子程序 检查端口, 逻辑型
.参数 端口, 文本型


.如果真 (取文本长度 (端口) > 5)
    返回 (假)
.如果真结束
.如果真 (到整数 (端口) = 0)
    返回 (假)
.如果真结束
返回 (真)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用语言编写的简单的ping网络IP地址的源码: ```e '========================================================================== '模块名称 : Ping网络IP地址源码 '文件名称 : ping_ip_code.e '权 限 : 仅供参考学习,请勿用于非法用途 '编写时间 : 2022年1月1日 '编写人员 : 智能助手 '联系方式 : 无 '=========================================================================== '引用外部组件 Include "url/gpURL.e" '声明常量 Const ICMP_ECHO_REQUEST = 8 ICMP_ECHO_REPLY = 0 IP_HEADER_SIZE = 20 ICMP_HEADER_SIZE = 8 '定义类型 Type PingReplyType dwRoundTripTime DWord '往返时间 bTTL Byte '存活时间 bReply Byte '是否收到回复 strIP As String * 15 'IP地址 End Type '定义函数 Function Ping(ip As String) As PingReplyType '创建套接字 Dim hSock As Long hSock = CreateSocket(AF_INET, SOCK_RAW, IPPROTO_ICMP) '设置超时时间 SetSockOpt hSock, SOL_SOCKET, SO_RCVTIMEO, 3000 '构造ICMP请求包 Dim ICMPRequest(63) As Byte ICMPRequest(0) = ICMP_ECHO_REQUEST ICMPRequest(1) = 0 Dim nChecksum As Long nChecksum = ChecksumArray(ICMPRequest()) ICMPRequest(2) = nChecksum And &HFF ICMPRequest(3) = nChecksum Shr 8 And &HFF '发送ICMP请求包 Dim nSent As Long nSent = SendToSocket(hSock, ICMPRequest(), ICMP_HEADER_SIZE, ip, 0) '接收ICMP响应包 Dim ICMPReply(1023) As Byte Dim strReplyIP As Asciiz * 16 Dim nReceived As Long Dim nRecvIP As String * 16 nReceived = RecvFromSocket(hSock, ICMPReply(), 1023, strReplyIP, 16) '解析ICMP响应包 Dim Reply As PingReplyType Reply.dwRoundTripTime = Timer() - dwStartTime Reply.bTTL = ICMPReply(IP_HEADER_SIZE + 8) Reply.bReply = ICMPReply(20) Reply.strIP = strReplyIP Ping = Reply '关闭套接字 CloseSocket hSock End Function '测试程序 Dim Reply As PingReplyType Reply = Ping("192.168.1.1") If Reply.bReply = ICMP_ECHO_REPLY Then Print "Ping " + Reply.strIP + " 成功!" Else Print "Ping " + Reply.strIP + " 失败!" End If Delay 1000 ``` 这个源码使用了Windows底层的ICMP协议来进行ping操作,可以通过传入要ping的IP地址来获取相关的回复信息,包括往返时间、存活时间和是否收到回复等。编译运行后可以在命令行窗口中输出ping操作的结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值