易语言Socket5客户端连接源码

.版本 2
.支持库 sock
.支持库 iconv

.程序集 窗口程序集_启动窗口

.子程序 _按钮1_被单击
.局部变量 客户端, 网络客户端
.局部变量 结果, 整数型
.局部变量 临时内容, 文本型
.局部变量 临时字节集, 字节集

' 蓝恒网络易语言Socket5客户端连接演示
' Http://www.lanheng.net

' 下面以来接代理访问土豆网为例  可直接使用IP地址或域名方式进行代理
' 结果 = 设置S5连接信息 (客户端, “192.168.1.6”, 60000, “U602414”, “P257638”, 1, “123.126.98.146”, 80)
结果 = 设置S5连接信息 (客户端, “192.168.1.6”, 60000, “U602414”, “P257638”, 2, “www.tudou.com”, 80)
.如果真 (结果 ≠ 0)
    编辑框1.内容 = “LhS5服务器连接信息设置失败! 请查看错误代码的对应信息! 错误代码:” + 到文本 (结果)
    ' -1 本地连接到代理服务器或发送数据到代理服务器失败 请检查本机连接是否正常
    ' 0=成功
    ' 1=身份失败
    ' 2=服务器连接用户要代理的目标地址失败
    ' 3=服务器解析用户发送的域名地址失败
    ' 255=失败
    返回 ()
.如果真结束


' 发送要模拟浏览器信息
临时内容 = “GET /  HTTP/1.0” + #换行符
临时内容 = 临时内容 + “Host: www.tudou.com” + #换行符
临时内容 = 临时内容 + “Accept-Encoding: deflate, sdch” + #换行符
临时内容 = 临时内容 + “User-Agent: Mozilla/5.0 Chrome/48.0.2564.109 Safari/537.36” + #换行符
临时内容 = 临时内容 + “Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8” + #换行符 + #换行符
临时字节集 = 到字节集 (临时内容)
编辑框1.加入文本 (选择 (客户端.发送 (临时字节集, 10000), “发送浏览器信息成功”, “发送浏览器信息失败”) + #换行符)


' 返回访问网址的信息、范围一个内容为头部和内容
临时字节集 = 客户端.接收 (100000, )
编辑框1.加入文本 (到文本 (取字节集长度 (临时字节集)) + #换行符)
编辑框1.加入文本 (到文本 (编码转换 (临时字节集, #编码_UTF_8, #编码_GB2312, )))

' 返回访问网址的信息  如果读取内容不全 、可使用上面头部返回的 Content-Length中的数量进行循环读取
临时字节集 = 客户端.接收 (100000, )
编辑框1.加入文本 (到文本 (取字节集长度 (临时字节集)) + #换行符)
编辑框1.加入文本 (到文本 (编码转换 (临时字节集, #编码_UTF_8, #编码_GB2312, )))

客户端.断开 ()


.子程序 设置S5连接信息, 整数型
.参数 连接客户端, 网络客户端
.参数 LhSocket5IP地址, 文本型, , LH代理服务器程序下开通的用户账号的IP地址
.参数 LhSocket5端口, 整数型, , LH代理服务器程序下开通的用户账号的端口
.参数 LhSocket5账号, 文本型, , LH代理服务器程序下开通的用户账号的账号
.参数 LhSocket5密码, 文本型, , LH代理服务器程序下开通的用户账号的密码
.参数 访问目标连接地址类型, 整数型, , 设置要代理的访问的目标类型 1=IP4  2=域名  此访问类型是告诉lh服务器要代理连接到的目标地址
.参数 连接地址, 文本型, , 根据上方输入内容  IP4地址 或  域名 
.参数 连接端口, 整数型, , 上方配套的连接地址对应的端口
.局部变量 临时字节集, 字节集
.局部变量 临时结果, 逻辑型


' 蓝恒网络易语言Socket5客户端连接演示
' Http://www.lanheng.net
' 下面代码开发者可根据自行情况摘取整合进自己的程序内进行相关修改 也可以直接使用

.如果真 (访问目标连接地址类型 = 1)  ' IP4连接方式  直接发送要访问目标IP4地址

    临时结果 = 连接客户端.连接 (LhSocket5IP地址, LhSocket5端口)
    .如果真 (临时结果 = 假)
        返回 (-1)
    .如果真结束

    临时字节集 = { 85 }  ' 头部固定不变
    临时字节集 = 临时字节集 + 取字节集左边 (到字节集 (取字节集长度 (到字节集 (LhSocket5账号))), 1)
    临时字节集 = 临时字节集 + 到字节集 (LhSocket5账号)
    临时字节集 = 临时字节集 + 取字节集左边 (到字节集 (取字节集长度 (到字节集 (LhSocket5密码))), 1)
    临时字节集 = 临时字节集 + 到字节集 (LhSocket5密码)
    临时字节集 = 临时字节集 + { 1 }
    临时字节集 = 临时字节集 + 到字节集 (文本IP到整型 (连接地址))
    临时字节集 = 临时字节集 + 到字节集 (htons (连接端口))

    临时结果 = 连接客户端.发送 (临时字节集, 1000000)
    .如果真 (临时结果 = 假)
        返回 (-1)  ' 发送数据失败
    .如果真结束

    临时字节集 = 连接客户端.接收 (10000, 临时结果)
    .如果真 (临时结果 = 假)
        返回 (-1)  ' 接收代理服务器返回数据失败
    .如果真结束

    .判断开始 (到整数 (临时字节集 [2]) = 0)
        返回 (0)
    .默认
        连接客户端.断开 ()
        返回 (临时字节集 [2])
    .判断结束


.如果真结束


.如果真 (访问目标连接地址类型 = 2)  ' 域名连接方式  直接发送要访问目标域名 有LH服务器程序使用DNS进行解析

    临时结果 = 连接客户端.连接 (LhSocket5IP地址, LhSocket5端口)
    .如果真 (临时结果 = 假)
        返回 (-1)
    .如果真结束

    临时字节集 = { 85 }  ' 头部固定不变
    临时字节集 = 临时字节集 + 取字节集左边 (到字节集 (取字节集长度 (到字节集 (LhSocket5账号))), 1)
    临时字节集 = 临时字节集 + 到字节集 (LhSocket5账号)
    临时字节集 = 临时字节集 + 取字节集左边 (到字节集 (取字节集长度 (到字节集 (LhSocket5密码))), 1)
    临时字节集 = 临时字节集 + 到字节集 (LhSocket5密码)
    临时字节集 = 临时字节集 + { 2 }
    临时字节集 = 临时字节集 + 取字节集左边 (到字节集 (取字节集长度 (到字节集 (连接地址))), 1)
    临时字节集 = 临时字节集 + 到字节集 (连接地址)
    临时字节集 = 临时字节集 + 到字节集 (htons (连接端口))

    临时结果 = 连接客户端.发送 (临时字节集, 1000000)
    .如果真 (临时结果 = 假)
        返回 (-1)  ' 发送数据失败
    .如果真结束

    临时字节集 = 连接客户端.接收 (10000, 临时结果)
    .如果真 (临时结果 = 假)
        返回 (-1)  ' 接收代理服务器返回数据失败
    .如果真结束

    .判断开始 (到整数 (临时字节集 [2]) = 0)
        返回 (0)
    .默认
        连接客户端.断开 ()
        返回 (临时字节集 [2])
    .判断结束

.如果真结束

返回 (0)

.子程序 文本IP到整型, 整数型, 公开, 失败返回0,整数地址,IN_AD,DR
.参数 文本IPV4, 文本型
.局部变量 整数IP, 整数型

.如果 (RtlIpv4StringToAddressA (文本IPV4, 真, 0, 整数IP) = 0)
    返回 (整数IP)
.否则
    返回 (0)
.如果结束

注意:必须是链接lhsocket5 server  搭建的代理账号才可以正常链接
源码下载:http://down.lanheng.net/Tool/LhSocket5Server/Code/e.rar
官方帮助:http://www.lanheng.net/ProductContent/39/85


你可能感兴趣的:(.net,网络分享)