YxdIocp (DIOCP修改版)
【特别说明】
本源码由YangYxd(音儿小白)以网友天地弦的DIOCP为基础修改优化而来。YxdIocp与DIOCP使用方式略有不同,不完全兼容!!
我会接收大家提交的BUG并尽快修复,但不负责解答任何使用方面的问题。实际上代码已经有比较多的注释,开源并不等于作者需要
免费给大家做客服解答各种问题。开源的目的一是让代码尽快成熟稳定,二是丰富行业资源和活力。“拿来主意”虽说比较快捷
省事,但并不值得提倡,有问题张口就问不是个好习惯。
【当前版本】
2017.11.14.001
【主要更改】
- -----------------------------------
- 2017.11.14
- -----------------------------------
* 优化 HTTPS 功能代码,修复相关BUG
* 修复 HTTP 大文件上传时的BUG
- -----------------------------------
- 2017.08.22
- -----------------------------------
* iocp.Sockets BUG修复(感谢:仓井很空)
- -----------------------------------
- 2016.11.23
- -----------------------------------
+ iocp.Http 增加 Https 服务模块 TIocpHttpsServer
+ 增加 OpenSSL 相关单元
* 优化代码
- -----------------------------------
- 2016.11.04
- -----------------------------------
* iocp.Http 修复 Send(Stream) 这个重载时,ContentType 无效的问题。(感谢: 别喝醉)
* iocp.Http Response类中增加 GetFileMimeType 类函数,可以用来获取文件的Mime类型。
- -----------------------------------
- 2016.10.25
- -----------------------------------
* iocp.Http.Mvc.pas 进一步完善 MVC 功能,加入 RequestBody 和 ResponseBody 标注。
* iocp.Utils.Str 增加 UrlEncodeEx 函数
* iocp.Http.Client 中已知bug修复,TURI.PathRelativeToAbs 增加到相对路径的支持;THttpClient 的默认字符集改为UTF-8.(感谢:阿木)
+ iocp.Http.client:THttpRequest 增加 LastError 属性
- -----------------------------------
- 2016.10.20
- -----------------------------------
+ 增加 iocp.Http.MVC 单元,TIocpHttpMvcServer 类实现了轻量级的MVC封装,可以通过注解轻松实现 Web服务开发
* 为 WebSocket 类增加连接成功事件,并修复断开事件触发两次的问题
* 其它 Bug 修复
- -----------------------------------
- 2016.08.19
- -----------------------------------
+ 为组件设计了图标
+ 为组件增加了win64位支持
- -----------------------------------
- 2016.08.17
- -----------------------------------
* iocp.Socket 单元 TIocpRemoteContext 类增加 BindAddr 属性,可以指定本地IP地址 (感谢:仓井很空)
* 其它改进,将一些属性公开,方便设计期设置
- -----------------------------------
- 2016.08.16
- -----------------------------------
+ 增加D10, XE6的dpk包
* 解决在XE6上编译失败的问题
- -----------------------------------
- 2016.08.12
- -----------------------------------
* 优化底层,修复服务端主动断开连接可能引发av错误的问题
* 优化 TIocpTcpCodecServer 服务
- -----------------------------------
- 2016.08.10
- -----------------------------------
+ 增加 iocp.Http.WebSocket 单元, 增加WebSocket服务支持
+ 增加 Base64 单元
+ 增加 SHA 单元
* 修复部分bpl安装模式下的问题,将服务组件Active属性改为设计期可用
* Http服务的跨域控制TIocpHttpAccessControlAllow改为class,支持设计期设置
- -----------------------------------
- 2016.08.08 (重要更新)
- -----------------------------------
* 优化Http服务Writer,可设置响应字符集,防止乱码
* 其它优化,解决乱码问题
- -----------------------------------
- 2016.08.05 (重要更新)
- -----------------------------------
* TIocpTcpServer、TIocpUdpServer 修复句柄泄漏严重bug
* TIocpCustomContext 修复由于RecvRequest释放时机不对造成的av错误
* iocp.Http 单元修复一处MakeHeader中存在的Bug
* Http服务组件性能优化
* 其它优化,和解决已知bug,提升稳定性,在D2007和DXE10中调试通过
* 感谢原DIOCP作者天地弦帮助测试和提供意见
- -----------------------------------
- 2016.07.18
- -----------------------------------
* iocp.Http.Client 优化
- -----------------------------------
- 2016.06.27
- -----------------------------------
+ iocp.Http 单元增加 TIocpHttpWriter 类,可在响应Http请求时用来输出网页内容
* 修复Http服务Send字符串中文乱码的问题
* TIocpHttpRequest中增加 GetParameterValues 函数用来读取表单中的数组
* 在Demo HttpService 中增加了一个POST提交表单的处理
- -----------------------------------
- 2016.06.23
- -----------------------------------
* 修复 iopc.Sockets 中 OnlineContextList 使用了 SocketHandle 可能会导致异常的问题。感谢弦弦
- -----------------------------------
- 2016.06.17
- -----------------------------------
* TIocpHttpServer 增加 AccessControlAllow 跨域控制属性,允许开启ajax跨域功能
- -----------------------------------
- 2016.06.08
- -----------------------------------
* TIocpHttpServer 增加 Charset, ContentLanguage 属性设置服务默认的语言和字符集
- -----------------------------------
- 2016.06.06
- -----------------------------------
* 修改 iocp.Http 单元中的 SendFile 函数,更加可控,增加 MimeTypes 识别。
- -----------------------------------
- 2016.05.25
- -----------------------------------
+ 增加 iocp.Http.Client 单元,实现HttpClient功能,支持标准Http客户端命令,支持Https安全连接
+ 增加 iocp.Utils.GMTTime 单元,将原 iocp.Http 单元中的GMT时间处理函数移到这里了
* 移除 iocp.Http 单元中的GMT时间处理函数
+ 增加 iocp.Utils.Dictionary 单元,Dictionary 字典(KV表)
+ 增加 iocp.Utils.LinkedList 单元,双向链表类
- -----------------------------------
- 2016.03.17
- -----------------------------------
* 修复iocp.Task中的特定场景下,空闲工作者全部被解雇引起的问题
- -----------------------------------
- 2016.02.24
- -----------------------------------
* 修复在win64位下存在的bug
- -----------------------------------
- 2016.02.18
- -----------------------------------
+ TIocpTcpClientProxy类增加自动切换IP的功能:远程HOST可以是一组以","分隔的IP地址
* HTTP服务模块修正在新版Delphi中不能下载文件的BUG
* 其它Bug修复
- -----------------------------------
- 2015.08.17
- -----------------------------------
+ HTTP服务模块支持Session, Cookies, 感谢: 天地弦
* 修复上个版本UdpSocket接收数据变慢的问题
* 优化字符串处理单元,更加高效. 感谢: 歼10
* 其它略微调整和优化
* TIocpTcpClientProxy 优化
- -----------------------------------
- 2015.07.31
- -----------------------------------
* 优化TIocpUdpServer服务,解决退出时内存泄漏问题
* TIocpTcpSocket优化和加强,增加两个用来判断内核接收缓冲区状态的属性:RecvBufferIsEmpty、RecvBufferSize,
增加几个Read函数,增加Seek函数,修改Connected属性的算法(速度变慢了,但保证正确性)
+ TIocpClientContext增加BindIP和BindPort属性,可查看当前连接的本机IP地址(服务器多IP时可判断客户端是与那个IP建立的连接)
+ 增加TIocpTcpSocketPool连接池,自动管理TIocpTcpSocket。
+ 增加TIocpTcpClientProxy TCP 客户端代理服务,帮助实现服务器间通讯、数据转发。
* 修复TIocpHttpRequest.DecodeParam函数存在的两处BUG
* 其它细小优化,增强稳定性。
* 感谢:Huixch(Http服务BUG), 仓井很空(2543818374, 修改IocpTcpSocket和Proxy的建议和测试)
- -----------------------------------
- 2015.07.19
- -----------------------------------
+ HTTP模块增加Pipe支持
* 优化自动踢除死连接功能, 增加KickOutInterval属性
* 优化TIocpTCPSocket,增加ConnectTimeOut属性
* 其它细小优化调整
- -----------------------------------
- 2015.06.12
- -----------------------------------
+ 增加UDP服务
+ 增加Demo UDPEcho
* 优化HTTP服务
* 优化UDPSocket
- -----------------------------------
- 2015.05.27
- -----------------------------------
+ 加载HTTP服务,增加表单提交支持,可上传小文件。
HTTP模块主要功能:
1. 支持标准Http访问服务
2. 支持局部传输
3. 支持文件下载,断点续传
4. 支持表单提交
5. 支持GZip压缩传输
- -----------------------------------
- 2015.05.26
- -----------------------------------
* 修复TIocpCustomContext中使用内存池Push时未加锁引发的严重BUG。
* 优化HTTP服务。
+ 同步DIOCP在TIocpConnection中将请求加入队列,以免连续多个请求时产生多线程处理一个连接,引发问题。
- -----------------------------------
- 2015.05.21
- -----------------------------------
* 修复TIocpTcpCodecServer解码流程中的BUG。
* 优化HTTP服务
+ 增加超时自动踢除功能
- -----------------------------------
- 2015.05.20
- -----------------------------------
* 修复多处BUG。如句柄数问题。
* 修复HTTP服务多处BUG
+ HTTP服务增加文件下载功能,支持超大文件传输。
- 将YxdHash、YxdStr精简出IOCP