xxhaishixx 发表于 2021-10-17 02:12:17

获取外网IP{模块}非网页(TCP毫秒级获取)

本帖最后由 xxhaishixx 于 2021-12-8 18:14 编辑

禁止转发吾爱

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

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

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

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



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

.版本 2
.支持库 sock

.程序集 程序集1

.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行


返回 (0)' 可以根据您的需要返回任意数值

.子程序 GetExtranetIP, 文本型, 公开, 成功返回外网IP,失败返回“127.0.0.1”。特点:不是通过网页获取,用TCP获取,速度快效率高。
.局部变量 client, 网络客户端
.局部变量 connect_ip, 文本型
.局部变量 local_ip, 字节集
.局部变量 sm, 逻辑型
.局部变量 头, 字节集
.局部变量 尾1, 字节集
.局部变量 中间数据1, 字节集
.局部变量 字符个数, 字节集
.局部变量 尾2, 字节集
.局部变量 ip, 文本型

connect_ip = 转换为IP地址 (“www.3322.org”)
.如果 (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”,引号直接用 #引号,如:""
.参数 后面文本, 文本型, , 3的后面为“4”,引号直接用 #引号,如:""
.参数 起始搜寻位置, 整数型, 可空, 可空。1为首位置,2为第2个位置,如此类推,如果被省略,则“寻找字节集”命令默认从首部开始,“倒找字节集”命令默认从尾部开始。
.参数 是否区分大小写, 逻辑型, 可空, 可空。初始值为“假”。假 = 不区分    真 = 区分大小写。
.局部变量 局_位置, 整数型
.局部变量 局_位置1, 整数型
.局部变量 局_前面文本, 文本型
.局部变量 局_后面文本, 文本型

局_前面文本 = 子文本替换 (前面文本, “#引号”, #引号, , , 真)
局_后面文本 = 子文本替换 (后面文本, “#引号”, #引号, , , 真)
是否区分大小写 = 取反 (是否区分大小写)
局_位置 = 寻找文本 (欲取全文本, 局_前面文本, 起始搜寻位置, 是否区分大小写)
.如果真 (局_位置 ≠ -1)
    局_位置 = 局_位置 + 取文本长度 (局_前面文本)
.如果真结束
局_位置1 = 寻找文本 (欲取全文本, 局_后面文本, 局_位置, 是否区分大小写)
.如果真 (局_位置 = -1 或 局_位置1 = -1)
    返回 (“”)
.如果真结束
返回 (取文本中间 (欲取全文本, 局_位置, 局_位置1 - 局_位置))



weihua168 发表于 2021-10-30 22:25:16

这个是本地获取吗

天天微笑 发表于 2021-11-4 19:35:04

感谢分享{:biggrin:}

jhonney 发表于 2021-11-9 13:37:30

刚看到这个帖子,结果取消了

cybermay 发表于 2021-12-2 11:34:06

还是来晚了 下次一定哈

liudasdb 发表于 2021-12-12 22:07:00

正好需要呢,谢谢分享
页: [1]
查看完整版本: 获取外网IP{模块}非网页(TCP毫秒级获取)