飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4468|回复: 5

[易语言] 获取外网IP{模块}非网页(TCP毫秒级获取)

[复制链接]
  • TA的每日心情
    奋斗
    2024-9-20 14:51
  • 签到天数: 391 天

    [LV.9]以坛为家II

    发表于 2021-10-17 02:12:17 | 显示全部楼层 |阅读模式
    本帖最后由 xxhaishixx 于 2021-12-8 18:14 编辑

    禁止转发吾爱

    告别传统网页获取的麻烦和时效性。

    而且很多网页的现在都不能长时间获取。

    以前有前辈写过一个通过dns服务器来获取的(我一直在用),结果今天那边的服务器挂了,所以才做了一个。

    还是像前辈一样,用TCP连接来获取,效果很好,很快,基本上就是毫秒级获取

    QQ截图20211017015108.png

    索性直接公布源码吧,原理很简单,就是自己写个服务端,用tcp通信,然后服务端返回给客户端的访问IP即可。源码如下:

    [Visual Basic] 纯文本查看 复制代码
    .版本 2
    .支持库 sock
    
    .程序集 程序集1
    
    .子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行
    
    
    返回 (0)  ' 可以根据您的需要返回任意数值
    
    .子程序 GetExtranetIP, 文本型, 公开, 成功返回外网IP,失败返回“127.0.0.1”。特点:不是通过网页获取,用TCP获取,速度快效率高。
    .局部变量 client, 网络客户端
    .局部变量 connect_ip, 文本型
    .局部变量 local_ip, 字节集
    .局部变量 sm, 逻辑型
    .局部变量 头, 字节集
    .局部变量 尾1, 字节集
    .局部变量 中间数据1, 字节集
    .局部变量 字符个数, 字节集
    .局部变量 尾2, 字节集
    .局部变量 ip, 文本型
    
    connect_ip = 转换为IP地址 (“[url]www.3322.org[/url]”)
    .如果 (client.连接 (connect_ip, 19112) = 真)
        头 = 到字节集 (“EMSG0011”)
        尾1 = 到字节集 (“”)
        尾2 = 到字节集 (“”)
        字符个数 = 到字节集 (到文本 (取文本长度 (“getip”)))
        client.发送 (头 + { 174, 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, 0 } + 尾1 + 字符个数 + 尾2 + 到字节集 (“getip”), 3000)
        local_ip = client.接收 (6000, sm)
        local_ip = local_ip + 到字节集 (“|”)
        local_ip = 取字节集中间 (local_ip, 21, 取字节集长度 (local_ip) - 20)
        ip = 文本_取出中间文本 (到文本 (local_ip), “”, “|”, , 假)
        .如果 (sm = 真)
            client.断开 ()
            返回 (ip)
        .否则
            client.断开 ()
            返回 (“127.0.0.1”)
        .如果结束
    
    .否则
        client.断开 ()
        返回 (“127.0.0.1”)
    .如果结束
    
    
    
    .子程序 文本_取出中间文本, 文本型, , 比如:欲取全文本为“12345”,现在要取出“3”,<3>的前面为“2”,<3>的后面为“4”。
    .参数 欲取全文本, 文本型, , 比如:欲取全文本为 12345
    .参数 前面文本, 文本型, , 3的前面为“2”,引号直接用 #引号,如:"[color=#引号red#引号]"
    .参数 后面文本, 文本型, , 3的后面为“4”,引号直接用 #引号,如:"[color=#引号red#引号]"
    .参数 起始搜寻位置, 整数型, 可空, 可空。1为首位置,2为第2个位置,如此类推,如果被省略,则“寻找字节集”命令默认从首部开始,“倒找字节集”命令默认从尾部开始。
    .参数 是否区分大小写, 逻辑型, 可空, 可空。初始值为“假”。假 = 不区分    真 = 区分大小写。
    .局部变量 局_位置, 整数型
    .局部变量 局_位置1, 整数型
    .局部变量 局_前面文本, 文本型
    .局部变量 局_后面文本, 文本型
    
    局_前面文本 = 子文本替换 (前面文本, “#引号”, #引号, , , 真)
    局_后面文本 = 子文本替换 (后面文本, “#引号”, #引号, , , 真)
    是否区分大小写 = 取反 (是否区分大小写)
    局_位置 = 寻找文本 (欲取全文本, 局_前面文本, 起始搜寻位置, 是否区分大小写)
    .如果真 (局_位置 ≠ -1)
        局_位置 = 局_位置 + 取文本长度 (局_前面文本)
    .如果真结束
    局_位置1 = 寻找文本 (欲取全文本, 局_后面文本, 局_位置, 是否区分大小写)
    .如果真 (局_位置 = -1 或 局_位置1 = -1)
        返回 (“”)
    .如果真结束
    返回 (取文本中间 (欲取全文本, 局_位置, 局_位置1 - 局_位置))




    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2024-10-4 16:52
  • 签到天数: 265 天

    [LV.8]以坛为家I

    发表于 2021-10-30 22:25:16 | 显示全部楼层
    这个是本地获取吗
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-1-2 10:19
  • 签到天数: 275 天

    [LV.8]以坛为家I

    发表于 2021-11-9 13:37:30 | 显示全部楼层
    刚看到这个帖子,结果取消了
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-11-8 15:54
  • 签到天数: 566 天

    [LV.9]以坛为家II

    发表于 2021-12-2 11:34:06 | 显示全部楼层
    还是来晚了 下次一定哈
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-10-6 19:29
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2021-12-12 22:07:00 来自手机 | 显示全部楼层
    正好需要呢,谢谢分享
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表