开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1038|回复: 31
收起左侧

[易语言纯源码] HP-Socket 易语言封装 6.0.8(基于论坛大佬例子整理修复升级)

[复制链接]
结帖率:64% (7/11)
发表于 4 天前 | 显示全部楼层 |阅读模式   四川省成都市
分享源码
界面截图: -
是否带模块: -
备注说明: -
HP-Socket 易语言封装 6.0.8 整理版
基于论坛大佬开源的修改更新版本
模块内保留了原作者的信息
这是一个面向易语言使用者整理的 HP-Socket 封装项目,基于原来的 HPSocket 5.9.1 示例工程升级维护,主要目标是:让易语言可以更稳、更方便地调用新版 HP-Socket,并提供一个能直接参考的 HTTP/HTTPS Server 示例。
本次整理重点更新了 HPSocket4C.dll、HP_Socket 易语言模块封装,以及 Http_Server.e 示例代码。原工程能跑,但里面有一些老版本遗留问题和示例级代码隐患,这次顺手把这些坑填了一遍。
项目内容
  • HP_Socket 易语言模块封装
  • 官方 HPSocket4C.dll 6.0.8 x86
  • Http_Server.e HTTP/HTTPS Server 示例
  • GET / POST 请求处理示例
  • 线程池异步处理请求示例
  • HTTPS SSL 初始化示例
  • 内置 DLL 资源自动释放逻辑

适合谁用
这个项目适合下面这些场景:
  • 易语言开发 TCP / UDP / HTTP / HTTPS 程序
  • 想在易语言里使用 HP-Socket 高性能网络库
  • 需要一个 HTTP 接口服务、本地服务、回调服务示例
  • 想学习 HP-Socket C 接口在易语言里的封装方式
  • 原来使用 5.9.1,想升级到 6.0.8 又不想自己一个个对接口

本次主要升级1. DLL 更新到 6.0.8
底层 HPSocket4C.dll 已更新为官方 HP-Socket 6.0.8 x86 版本。
2. 模块接口同步新版导出
HP_Socket 模块补充了 6.0.8 中新增或需要同步的接口,例如:
  • HP_Server_SetDualStack
  • HP_Server_IsDualStack
  • HP_UdpNode_SetDualStack
  • HP_UdpNode_IsDualStack
  • HP_TcpAgent_SetSyncConnectTimeout
  • HP_TcpAgent_GetSyncConnectTimeout
  • HP_TcpClient_SetSyncConnectTimeout
  • HP_TcpClient_GetSyncConnectTimeout

同时移除了新版 DLL 中已经不存在的 SYS_Alloca 声明,避免接口和 DLL 不匹配。
HP_Socket 模块修复UDP Node 地址获取问题
修复 IUdpNode.GetLocalAddress 调错函数的问题。原来的封装可能会调用到不对应的地址获取函数,导致获取结果不可靠。
UDP 端口类型修正
修正 UDP Node 相关端口参数类型,统一使用 短整数型,和 HP-Socket C API 的端口类型保持一致。
地址缓冲区更稳
优化 IServer、IAgent、IClient、IUdpCast、IUdpNode 的地址获取逻辑,减少地址被截断、缓冲区长度不够或读取失败的问题。
修复 IConvert 重复加载内存泄漏
IConvert.Load 重复调用时,旧 buffer 没有正确释放。现在会先释放旧数据,再加载新数据,避免内存越跑越高。
修复 IWinHttpEx 连接复用问题
优化 IWinHttpEx 的连接复用判断,避免错误复用无效连接。
修复 IWinHttpEx 超时状态清理
请求超时后会主动断开并清空 m_ConnId,避免后续请求继续拿旧连接 ID 发送。
Http_Server.e 示例修复1. 修复 HTTPS 对象未销毁
原示例只销毁了 g_HttpServer,没有销毁 g_HttpsServer。现在退出时会同时销毁 HTTP 和 HTTPS 对象。
2. 退出前先停止正在运行的服务
窗口销毁时,如果当前 server 还在运行,会先 Stop,再销毁对象,资源释放更规矩。
3. 删除 OnReceive 原始数据回发
原代码在 HTTP Server 的 OnReceive 事件里直接把收到的原始请求数据 Send 回客户Duan。
这对 HTTP 服务端来说不合适,容易破坏正常 HTTP 响应流程。现在 OnReceive 只返回 #HR_OK,真正的响应统一在请求完成后用 SendResponse 发送。
4. POST Body 增加大小限制
原示例会无限累加 POST 数据,遇到大请求或恶意请求时容易撑爆内存。
现在增加:
.常量 MAX_BODY_SIZE, "1048576"
默认限制为 1MB,超过直接返回错误。
5. 连接缓存创建失败会处理
OnAccept 中创建 IBufferPtr 或绑定 ConnectionExtra 失败时,现在会释放资源并返回错误,不再静默继续。
6. 线程池启动和提交任务增加检查
线程池创建/启动失败会记录日志。请求完成后提交任务失败,也会返回错误,避免请求挂住没有响应。
7. HTTPS SSL 初始化增加检查
启动 HTTPS 前会检查证书文件是否存在,并判断 SetupSSLContext 是否成功。
如果 SSL 没初始化成功,HTTPS 启动会被禁止,避免后面报一堆看不懂的问题。
8. 响应头修正
原来响应头写的是:
Accept: text/plain, text/html
Accept 是请求头,不适合作为响应头。
现在改为:
Content-Type: text/plain; charset=gbk
9. 端口增加校验
启动前检查端口范围,必须是 1-65535。空端口、负数、超范围都会直接提示。
10. 启动失败后清空 m_server
如果 Start 失败,会把 m_server 清空,避免后续停止或销毁逻辑误判。
11. GetSenderName 更准确
原来只要不是 HTTP,就默认显示 HTTPS。现在未知句柄会显示 unknown,日志更真实。
12. 连接附加对象释放后清空
OnClose 释放 IBufferPtr 后,会调用 SetConnectionExtra(..., 0) 清空附加数据,避免异常路径重复引用。
使用建议推荐配套使用
建议 HP_Socket 模块、HPSocket4C.dll、Http_Server.e 示例保持同一套版本,不要混用旧模块和新 DLL。
如果模块是 6.0.8,DLL 也建议使用 6.0.8 x86。
HTTPS 需要证书
HTTPS 示例默认使用:
ssl-cert\server.cer
ssl-cert\server.prikey
ssl-cert\ca.cer
如果证书不存在,HTTP 可以正常使用,HTTPS 会提示 SSL 未初始化。
POST 限制可自行调整
默认 POST Body 限制为 1MB:
.常量 MAX_BODY_SIZE, "1048576"
如果你的接口需要上传更大的数据,可以按实际情况调整。
注意事项
  • 本整理版主要面向 32 位易语言环境。
  • HPSocket4C.dll 请放在程序运行目录,或使用示例内置释放逻辑。
  • 如果易语言 IDE 已打开旧文件,更新后需要关闭并重新打开工程。
  • 如果自己继续改 .e,建议保留备份,尤其是涉及模块、程序集变量和资源时。

版权说明
HP-Socket 是 JessMA 开源项目,遵循 Apache License 2.0。
原项目信息:
Copyright JessMA Open Source (ldcsaa@gmail.com)
Author  : Bruce Liang
Website : http://www.jessma.org
Project : https://github.com/ldcsaa
Blog    : http://www.cnblogs.com/ldcsaa
Wiki    : http://www.oschina.net/p/hp-socket
License : Apache License 2.0

HP_Socket_v6.0.8.zip

3.49 MB, 下载次数: 92, 下载积分: 精币 -2 枚

评分

参与人数 2好评 +2 精币 +6 收起 理由
李泽勇2 + 1 + 3 感谢分享,很给力!~
天雷 + 1 + 3 YYDS~!

查看全部评分


本帖被以下淘专辑推荐:

  • · 收藏|主题: 391, 订阅: 6
结帖率:64% (7/11)

签到天数: 7 天

 楼主| 发表于 昨天 18:50 | 显示全部楼层   伊朗
lrbf810 发表于 2026-5-16 23:58
原作者3月份更新了6.08版本的,你可以在他新版本上面修复。

可以给个链接吗
回复 支持 反对

使用道具 举报

结帖率:100% (17/17)

签到天数: 11 天

发表于 昨天 10:17 | 显示全部楼层   广东省东莞市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

签到天数: 18 天

发表于 昨天 09:37 | 显示全部楼层   浙江省宁波市
感谢分享,支持开源!!!
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 前天 22:10 | 显示全部楼层   江苏省苏州市
进来看看按。
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)

签到天数: 11 天

发表于 3 天前 | 显示全部楼层   湖南省常德市
原作者3月份更新了6.08版本的,你可以在他新版本上面修复。
回复 支持 反对

使用道具 举报

签到天数: 19 天

发表于 3 天前 | 显示全部楼层   山东省青岛市
整理得不错啊,支持一下,易语言玩家有福了哈
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)

签到天数: 2 天

发表于 3 天前 | 显示全部楼层   浙江省宁波市
11111111111111111111111
回复 支持 反对

使用道具 举报

签到天数: 3 天

发表于 3 天前 | 显示全部楼层   四川省资阳市
感谢分享
回复 支持 反对

使用道具 举报

签到天数: 15 天

发表于 3 天前 | 显示全部楼层   新疆维吾尔自治区巴音郭楞蒙古自治州
谢谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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