DIOCP之EchoServer分析】的更多相关文章

constructor TfrmMain.Create(AOwner: TComponent);begin inherited Create(AOwner); sfLogger.setAppender(TStringsAppender.Create(mmoLog.Lines)); sfLogger.AppendInMainThread := true; FTcpServer := TDiocpTcpServer.Create(Self); FTcpServer.Name := 'iocpSVR'…
最近很多新朋友在调试echo这个例程时发现,总是卡死客户端或服务器端,这是因为客户端的接收数据用的memo没有处理接受到的行数,导致超过最大行数,而卡死界面,只需要如下操作就可以解决: 引用弦子的:虽然DIOCP尽可能的保证底层稳定,但是要开发一个稳健的程序,还是要靠大家自己的努力. 用DIOCP还是要有一些多线程基础的.要不然是搞不稳定的,请大家在使用diocp之前,要对基本的线程规则搞清楚.DIOCP事件都是线程中触发的.不要直接访问UI, 读写全局变量要用临界,数据库连接连接池之类的.…
本次分析开发流程图采用的是DIOCP群里的群友[彩蛋]所给的DEMO,依然是win7的画图作品. 本人分析认为:学习网络开发不同本地开发,首先你应该知道完整的开发流程即网络程序运行的先后顺序,有个整体感知,不能一头深入到代码中,框架明白之后再去研究具体实现,大家可以用思维导图来画画,试着写个DEMO,你会发现很多,大神们多多关照,不要扔鞋子,可以扔点红包,哈哈………
Mina是Apache社区维护的一个开源的高性能IO框架,在业界内久经考验,广为使用.Mina与后来兴起的高性能IO新贵Netty一样,都是韩国人Trustin Lee的大作,二者的设计理念是极为相似的.在作为一个强大的开发工具的同时,这两个框架的优雅设计和不俗的表现,有很多地方是值得学习和借鉴的.本文将从Mina工作原理的角度出发,对其结构进行分析. 总体结构 Mina的底层依赖的主要是Java NIO库,上层提供的是基于事件的异步接口.其整体的结构如下: IoService 最底层的是IOS…
来自网友天地弦的DIOCP早已经广为人知了,有很多的同学都用上了它,甚至各种变异.修改版本也出了不少.我最近也在学习DIOCP,打算将它用于自己的服务端,今天让我们来一起探密它(DIOCP)的运作核心吧. DIOCP作为对Windows的IOCP完成端口封装,拥有了很高的性能,经过对ECHO示例的测试,它能轻松应对几万连接和并发.网络通讯一般分为6大阶段:请求连接.接受连接.接收数据.处理数据.回复数据.断开连接,下面我就从这6大阶段入手,来看看DIOCP是如何实现的. 一. 请求连接 实际上这…
ECHOServer代码(不考虑粘包的处理): unit ufrmMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ActnList, diocp_tcp_server, ExtCtrls, ComCtrls, utils_safeLogger, utils_BufferPool, utils_fileWriter,…
DIOCP 运作核心探密   原文连接: http://blog.qdac.cc/?p=2362 原作者: BB 天地弦的DIOCP早已经广为人知了,有很多的同学都用上了它,甚至各种变异.修改版本也出了不少.我最近也在学习DIOCP,打算将它用于自己的服务端,今天让我们来一起探密它(DIOCP)的运作核心吧. DIOCP作为对Windows的IOCP完成端口封装,拥有了很高的性能,经过对ECHO示例的测试,它能轻松应对几万连接和并发.网络通讯一般分为6大阶段:请求连接.接受连接.接收数据.处理数…
官网定义: netty是一个异步.事件驱动的网络应用框架,用于快速开发可维护的.高性能的服务端和客户端程序. 原理分析 Architecture Overview 网络模型:netty采用了Reactor设计模式,Reactor设计可分三种: 单线程版本,如图: 学C的朋友会知道IO多路复用,我感觉和这个Reactor模式差不多,Reactor收到新连接调用acceptor的accept,返回的SocketChannel会注册到Reactor里,当连接可读或者可写时,分发一个handler处理.…
官网定义: netty是一个异步.事件驱动的网络应用框架,用于快速开发可维护的.高性能的服务端和客户端程序. 原理分析  Architecture Overview 网络模型:netty采用了Reactor设计模式,Reactor设计可分三种: 单线程版本,如图: 学C的朋友会知道IO多路复用,我感觉和这个Reactor模式差不多,Reactor收到新连接调用acceptor的accept,返回的SocketChannel会注册到Reactor里,当连接可读或者可写时,分发一个handler处理…
目录大纲: 前言 针对 Netty 例子源码做了哪些修改? 看 pipeline 是如何将数据送到自定义 handler 的 看 pipeline 是如何将数据从自定义 handler 送出的 总结 前言 在 Netty 核心组件 Pipeline 源码分析(一)之剖析 pipeline 三巨头 中,我们详细阐述了 pipeline,context,handler 的设计与实现.知道了 Netty 是如何处理网络数据的,但到目前为止,我们都没有实打实的走一遍流程,实际上,debug 一遍流程,会…