开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 31459|回复: 187
收起左侧

[易语言纯源码] 易语言纯源码使用IOCP实现异步Socket,实现了简易版HttpServer

  [复制链接]
结帖率:100% (1/1)
发表于 2018-9-2 23:47:53 | 显示全部楼层 |阅读模式   广东省广州市
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
本帖最后由 L1yp 于 2018-9-2 23:48 编辑
前几天发支持库源码: https://bbs.125.la/forum.php?mod=viewthread&tid=14220237

由于BUG较多而无法解决,所以打算使用易语言纯源码实现,崩溃了至少还能找下源码,在此非常感谢[@上月由良]的悉心教导和帮我用OD调试找崩溃点....


之所以用C实现是因为之前不知道易语言也可以动态申请结构体,感觉自己实现很麻烦,后来看到由良大佬的代码才知道易语言有这种黑科技 ((易语言白玩了几年,感觉和大佬安装的不是同一个易语言...

异步的UDPSocket,可用做客户端,也可以用于服务器,感觉本地通讯用UDP还是挺不错的
UDPSocket.png




异步的TCPClient,可以创建成千上万个链接,处理线程永远是[CPU核心数*2],图片是向百度发送了ClientHello,也就是HTTPS握手的第一个包,服务器会回3个包.. 图上的粘包了.
TCPClient.png


异步的TCPServer,可以接收成千上万个客户,处理线程永远是[CPU核心数*2],上面的Client向Server发数据
TCPServer-1.png
下面的是Server收到的数据
TCPServer-2.png



HTTPServer,本模块只实现了简单的HTTP协议解析,并没有实现HTTPS,期待易友和我一起来Https,感觉搞完可以对这一方面进步很大...
httpserver.png



压缩包内的文件列表
FileList.png



Q: 我为什么要做这系列Socket模块?
A: 自己的需求需要用批量客户端,但是限于易语言的阻塞IO导致一个客户端一个线程,我不能接受这个方案,所以了解到了异步IO,在Windows上有IOCP这个异步IO模型,完美解决这个问题,仅仅使用 [CPU核心数*2]的线程数量就可以处理成千上万的链接甚至更多...


Q:为什么不用已有的框架?
A:不太喜欢带DLL,害怕C++ Runtime Error....,而且功能太多用不到,更重要是自己想学习下这些API,毕竟自己会得多点总会好点..


Q:为什么做TCPServer?
A:因为做完TCPClient,感觉TCPServer差不多(其实差的挺多,还有点难),所以就继续深入做了TCPServer.


Q:易语言已经有很多HttpServer了,为什么还要自己做?
A:纯属爱好和学习,如果您和我一样热爱造轮子,可以加群和我一起交流一起进步.


关于HTTP,Server研究了一天的HTTPS,差点手撸SSL协议,撸到Server的证书下发的时候,发现[证书]/[加密]有点复杂,而自己这方面的知识储备又少之又少,完全达不到实现HTTPS的要求,所以先搁着,如果大家有兴趣,可以加群一起讨论,一起搞.


我做这个都是为了学习和自己项目的需求0 0


最后,如果大家发现了什么BUG无法解决,可以联系我解决,我希望论坛的易友能一起进步.


elib群号:547525064
本群讨论支持库制作,模块制作,加群请写加群验证信息.

最后感谢elib全体大佬~


Winsocket.rar (1.83 MB, 下载次数: 1606)

点评

支持   江西省赣州市  发表于 2022-7-9 21:37
MSDN好像说要2个sockaddr的长度 一个自己的一个远程的   广东省广州市  发表于 2018-9-5 23:53
4个成员按8字节对齐?   广东省广州市  发表于 2018-9-5 00:00
楼上 结构体的大小是需要内存对齐,所以才会出现32   广西壮族自治区玉林市  发表于 2018-9-4 21:48
sizeof(sockaddr_in)是16 不知道为什么要给他32字节才行   广西壮族自治区南宁市  发表于 2018-9-4 16:07
记得没错的话那是个结构体 长度不够可能导致内存溢出   福建省福州市  发表于 2018-9-4 14:55
非常欢迎大家加入elib群一起交流学习群号:547525064,有问题会在群里讨论解决   广东省广州市  发表于 2018-9-4 11:01

评分

参与人数 11好评 +11 精币 +30 收起 理由
wanzhenghe999 + 1 + 2 感谢发布原创作品,精易因你更精彩!
羽傲天 + 1 + 2 支持开源~!感谢分享
范爷我怕怕 + 1 + 2 支持开源~!感谢分享
问心o + 1 + 2 支持开源~!感谢分享
Chilkat + 1 + 1 支持开源~!感谢分享
神祇 + 1 + 2 支持开源~!感谢分享
ko44 + 1 + 2 支持开源~!感谢分享
weefic + 1 + 2 感谢分享,很给力!~
黑网达人 + 1 + 2 感谢分享,很给力!~
冰点 + 1 + 10 感谢发布原创作品,精易因你更精彩!
镇坛道德标杆 + 1 + 3 很好很强悍,坚持下去哦~

查看全部评分


本帖被以下淘专辑推荐:

  • · 鱼木|主题: 1546, 订阅: 152
  • · 精品集|主题: 611, 订阅: 64
  • · 坐标贴|主题: 224, 订阅: 13
  • · |主题: 277, 订阅: 10
结帖率:100% (1/1)
 楼主| 发表于 2018-10-11 11:57:34 | 显示全部楼层   广东省广州市
winsocket for e 密码1.rar (250.32 KB, 下载次数: 299)
回复 支持 反对

使用道具 举报

签到天数: 11 天

发表于 2024-5-18 12:31:24 | 显示全部楼层   广东省汕头市
6666666666666666666666666666666666666666666
回复 支持 反对

使用道具 举报

发表于 2024-1-19 21:37:36 | 显示全部楼层   重庆市重庆市
太喜欢带DLL,害怕C++ Runtime Error....,而且功能太多用不到
回复 支持 反对

使用道具 举报

发表于 2024-1-7 10:35:49 | 显示全部楼层   广东省茂名市
666666666666666666666
回复 支持 反对

使用道具 举报

发表于 2024-1-7 02:44:57 高大上手机用户 | 显示全部楼层   **
Udp可以异步很好
回复 支持 反对

使用道具 举报

签到天数: 11 天

发表于 2023-12-12 11:18:49 | 显示全部楼层   陕西省延安市
1111111111111111111111111111111111111111
回复 支持 反对

使用道具 举报

签到天数: 11 天

发表于 2023-12-12 11:18:13 | 显示全部楼层   陕西省延安市
11111111111111111111111111111111111111
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 3 天

发表于 2023-12-1 04:31:56 | 显示全部楼层   重庆市重庆市
拿走了。谢谢楼主
回复 支持 反对

使用道具 举报

结帖率:90% (27/30)

签到天数: 5 天

发表于 2023-11-28 15:08:39 | 显示全部楼层   山东省济宁市
多谢分享
回复 支持 反对

使用道具 举报

结帖率:71% (10/14)

签到天数: 6 天

发表于 2023-11-10 23:49:25 | 显示全部楼层   重庆市重庆市
感谢分享
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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