网站首页 > 易语言相关 > 易语言模块源码 正文
资源介绍:
模块里有类_客户端_SSL,类_服务端_SSL,KernelFunc,类_许可区,类_网络环境_SSL
资源作者:
易语言入门教程学习
资源界面:
.版本 2
.程序集 类_客户端_SSL, , 公开
.程序集变量 hSocket
.程序集变量 m_ServSockAddr, sockaddr
.程序集变量 CTX
.程序集变量 hSSL, 整数型
.程序集变量 m_ClientCert, 文本型
.程序集变量 m_ClientKey, 文本型
.程序集变量 Bak_ClientStruct, t_ClientStruct
.子程序 _初始化
' 本源码来自三叶资源网(www.sanye.cx)
类_客户端_SSL.设置证书文件 (“ClientCert.pem”, “ClientKey.pem”)
.子程序 _销毁
类_客户端_SSL.断开连接 ()
.子程序 设置证书文件, , 公开
.参数 客户证书, 文本型, , ClientCert.pem
.参数 客户私钥, 文本型, , ClientKey.pem
m_ClientCert = 客户证书
m_ClientKey = 客户私钥
.子程序 连接, 逻辑型, 公开
.参数 目标地址, 文本型
.参数 端口, 短整数型
.参数 通知函数, 子程序指针, , [必须有1个参数=消息类型]
.参数 超时时间, , 可空
.参数 立即SSL连接, 逻辑型, 可空, [默认不用管,代理连接时需要]
.局部变量 fd_read, fd_set
.局部变量 fd_write, fd_set
.局部变量 返回值, 整数型
.局部变量 meth, 整数型
.如果真 (目标地址 = “” 或 端口 = 0)
返回 (假)
.如果真结束
meth = TLSv1_client_method () ' 放在第一句可以让DLL初始化..
类_客户端_SSL.断开连接 ()
CTX = cdeclCall (ProcAddr (“SSL_CTX_new”), meth)
.如果真 (LoadCRTFile (CTX, m_ClientCert, m_ClientKey) = 假)
类_客户端_SSL.断开连接 ()
返回 (假)
.如果真结束
Bak_ClientStruct.NotifyProc = 到数值 (通知函数)
Bak_ClientStruct.hSocket = _socket (#AF_INET, #套接类型_Stream, #协议_TCP)
.如果真 (Bak_ClientStruct.hSocket = #SOCKET_ERROR)
返回 (假)
.如果真结束
_setsockopt (Bak_ClientStruct.hSocket, #SOL_SOCKET, #SO_RcvBuf, 0, 4) ' 设置读取缓存大小为0
_setsockopt (Bak_ClientStruct.hSocket, #SOL_SOCKET, #SO_SndBuf, 0, 4) ' 设置写入缓存大小为0
m_ServSockAddr.sin_family = #AF_INET
m_ServSockAddr.sin_port = _ntohs (端口)
m_ServSockAddr.sin_addr = GetNetAddrName (目标地址)
.如果真 (是否为空 (超时时间))
超时时间 = 3000
.如果真结束
_ioctlsocket (Bak_ClientStruct.hSocket, #FIONBIO, 1)
_connect (Bak_ClientStruct.hSocket, m_ServSockAddr, #SizeOf_sockaddr)
fd_write.fd_count = 1
fd_write.fd_array = Bak_ClientStruct.hSocket
.如果 (超时时间 = -1)
返回值 = _select_Forever (0, fd_read, fd_write, 0, 0)
.否则
返回值 = _select (0, fd_read, fd_write, 0, 辅_GetTimeOut (超时时间))
.如果结束
_ioctlsocket (Bak_ClientStruct.hSocket, #FIONBIO, 0)
.如果真 (返回值 ≤ 0)
_closesocket (Bak_ClientStruct.hSocket)
返回 (假)
.如果真结束
hSocket = Bak_ClientStruct.hSocket
.如果真 (是否为空 (立即SSL连接) = 真 或 立即SSL连接 = 真)
.如果真 (建立SSL连接 () = 假)
类_客户端_SSL.断开连接 ()
返回 (假)
.如果真结束
.如果真结束
返回 (真)
.子程序 取Socket句柄, 整数型, 公开, [使用代理协商时用到]
返回 (hSocket)
.子程序 建立SSL连接, 逻辑型, 公开, [使用代理之后必须用到]
.局部变量 ptr, 整数型
' SSl==
Bak_ClientStruct.hSSL = cdeclCall (ProcAddr (“SSL_new”), CTX)
hSSL = Bak_ClientStruct.hSSL
.如果真 (hSSL = 0)
返回 (假)
.如果真结束
cdeclCall (ProcAddr (“SSL_set_fd”), hSSL, hSocket)
.如果真 (cdeclCall (ProcAddr (“SSL_connect”), hSSL) = #SSL_ERROR)
返回 (假)
.如果真结束
' ===
ptr = _GlobalAlloc (0, #SizeOf_ClientStruct)
CopyFromClientStruct (ptr, Bak_ClientStruct, #SizeOf_ClientStruct)
_CreateThread (0, 0, &线程_客户端_事件获取, ptr, 0, 0)
返回 (真)
.子程序 断开连接, , 公开
.如果真 (hSSL ≠ 0)
cdeclCall (ProcAddr (“SSL_shutdown”), hSSL)
cdeclCall (ProcAddr (“SSL_free”), hSSL)
hSSL = 0
.如果真结束
.如果真 (hSocket ≠ 0)
_shutdown (hSocket, #SD_BOTH)
_closesocket (hSocket)
hSocket = 0
.如果真结束
.如果真 (CTX ≠ 0)
cdeclCall (ProcAddr (“SSL_CTX_free”), CTX)
CTX = 0
.如果真结束
m_ServSockAddr.sin_port = 0
m_ServSockAddr.sin_addr = 0
.子程序 取服务器IP, 文本型, 公开
返回 (_inet_ntoa (m_ServSockAddr.sin_addr))
.子程序 发送数据, 整数型, 公开, 返回发送成功长度[有些对方的缓存大小是有限制的]
.参数 数据, 字节集
.局部变量 返回值
.如果真 (hSSL = 0)
返回 (-1)
.如果真结束
.如果真 (数据 = { })
返回 (0)
.如果真结束
' 返回值 = _send (hSocket, 数据, 取字节集长度 (数据), 0)
返回值 = cdeclCall (ProcAddr (“SSL_write”), hSSL, Ptr_Bin (数据), 取字节集长度 (数据), 0)
返回 (返回值)
.子程序 取回数据, 字节集, 公开
.参数 通知参数值
.局部变量 ClientStruct, t_ClientStruct
.如果真 (通知参数值 = 0)
返回 ({ })
.如果真结束
CopyToClientStruct (ClientStruct, 通知参数值, #SizeOf_ClientStruct)
返回 (指针到字节集 (ClientStruct.DataParam, _GlobalSize (ClientStruct.DataParam)))
.子程序 取消息类型, 整数型, 公开
.参数 通知参数值
.局部变量 ClientStruct, t_ClientStruct
.如果真 (通知参数值 = 0)
返回 (-1)
.如果真结束
CopyToClientStruct (ClientStruct, 通知参数值, #SizeOf_ClientStruct)
返回 (ClientStruct.MsgType)
.子程序 标记参数是否正确, 逻辑型, 公开, [没有类似[取事件组件()]的命令,所以用这个来代替]
.参数 通知参数值
.局部变量 ClientStructStruct, t_ClientStruct
.如果真 (通知参数值 = 0 或 hSocket = 0)
返回 (假)
.如果真结束
CopyToClientStruct (ClientStructStruct, 通知参数值, #SizeOf_ClientStruct)
返回 (ClientStructStruct.hSocket = hSocket)资源下载:
- 上一篇: 常用消息类操作组合框列表框编辑框
- 下一篇: 取节气模块+例程
猜你喜欢
- 2023-10-09 定时执行任务模块(Metr_定时执行任务[Majo])
- 2023-02-13 讯飞文本识别鉴权与文字识别源码
- 2022-04-07 大漠插件免费版3.1233的中文版模块
- 2022-04-05 易语言log日志模块源码
- 2022-03-13 易语言TCP客户端模块 支持SSL
- 2021-12-23 队长自动化测试模块2.96
- 2021-12-12 判断电脑是否开启VT虚拟化(你的cpu虚拟化特性vt没有开启)
- 2021-12-01 Echarts商业级数据图表库模块v1.7.0.328【模块及示例大全】
- 2021-11-27 动态添加选择夹子夹例程源码
- 2021-11-14 配置项加密读写源码
欢迎 你 发表评论:
- 百度站内搜索
- 关注微信公众号
- 网站分类
-
- 网站公告
- 电子书书籍
- 程序员工具箱
- 编程工具
- 易语言相关
- 网络相关源码
- 图形图像源码
- 系统工具源码
- 易语言模块源码
- 易语言支持库
- 数据库类源码
- 易语言例程
- 易语言游戏开发
- 易语言模块
- 多媒体类源码
- 易语言资源网
- 易语言视频教程
- JS分析教程
- 易语言图文教程
- 易语言常见问题及笔记
- 工具源码
- 易语言版本
- 网络编程
- javascript
- PHP编程
- html
- 正则表达式
- 面试题
- nodejs
- 其它综合
- 脚本专栏
- python
- 按键精灵相关
- 按键精灵图文教程
- 按键精灵视频教程
- 按键精灵Q语言
- 按键精灵安卓版
- golang
- 游戏安全
- 火山相关
- 火山安卓软件
- 火山常见问题及笔记
- 火山安卓源码
- 火山视频教程
- 火山PC版本下载
- 火山PC视窗例程
- 互联网那些事
- 引流推广
- 项目揭秘
- 网络营销
- 营销软件
- QQ营销软件
- 娱乐软件
- 机器人插件
- 培训教程
- 技术教程
- 活动线报
- 数据库
- Redis
- Access
- MongoDB
- Mysql
- 问答
- 其它
- 易语言
- 需求
- 在线教程
- 多线程培训班
- 觅风易语言教程
- 模拟系列教程
- 集中营易语言教程
- 历史数据
- 随机tag










已有28位网友发表了看法:
易语言官方网站 评论于 [2018-11-30 08:17:08] 回复
易语言socket
推迟调用子程序_高精度计时 评论于 [2018-12-27 09:56:54] 回复
易语言ssl
构造ICMP报头 评论于 [2019-01-05 12:44:42] 回复
易语言 socket通信
代理服务器端口 评论于 [2019-01-16 10:10:36] 回复
易语言 ssl模块
带标签编辑框 评论于 [2019-01-17 09:09:06] 回复
易语言+ssl+smtp
填充背景颜色 评论于 [2019-01-29 13:06:19] 回复
易语言 ssl浏览器
查询快捷方式 评论于 [2019-01-31 11:02:35] 回复
易语言 Socket ssl
免费源码资源网 评论于 [2019-02-08 02:44:54] 回复
易语言SSL邮件
易语言网站 评论于 [2019-05-15 11:12:05] 回复
易语言socket局域网通讯
自学网 评论于 [2019-05-30 15:15:47] 回复
易语言获取socke+port
易语言主题 评论于 [2019-06-11 08:42:29] 回复
易语言+网截+ssl
易语言教程网站 评论于 [2019-07-03 21:54:45] 回复
易语言SSL源码
易语言教程站 评论于 [2019-07-21 09:56:18] 回复
易语言 SSL
易语言源码站 评论于 [2019-08-15 22:07:49] 回复
易语言socket发送ssl
易语言源码站 评论于 [2019-08-15 22:08:41] 回复
易语言tcpclient源码
易语言知识库 评论于 [2019-08-21 09:35:55] 回复
易语言ssl
易语言自学网 评论于 [2019-08-22 10:00:38] 回复
易语言SSL解密
易语言例程 评论于 [2019-09-23 09:36:37] 回复
易语言ssl
易语言TV 评论于 [2019-10-31 21:04:17] 回复
易语言连接socket
三叶网 评论于 [2019-11-02 22:56:17] 回复
易语言+closesocket
易语言例子 评论于 [2020-02-19 13:39:41] 回复
易语言写ssl
预处理现行程序 评论于 [2020-03-20 14:32:30] 回复
易语言socket
易语言例子 评论于 [2020-04-25 13:05:20] 回复
易语言ssl
易语言 评论于 [2020-05-27 23:45:31] 回复
易语言网络通信模块
按钮 评论于 [2020-06-05 23:43:37] 回复
易语言+socket+模块
易语言 评论于 [2020-09-10 20:07:02] 回复
易语言ssl
编程学习平台 评论于 [2021-04-13 12:50:50] 回复
易语言通信模块源码
易语言学习平台 评论于 [2021-12-06 13:45:42] 回复
易语言+tls+tcp