上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 25 下一页
摘要: 经过对一段时间对IOCP的学习和研究。对IOCP的流程有了一定的了解。后面对一段时间的IOCP优化和实际项目的使用,在DIOCP中加入了日志文件记录功能,利用api编写了一个客户端通信类,等解决了很多bug,并已使用在公司的项目中,现运行稳定。今天对IOCP退出时资源的释放,做了最后一步研究和优化。为了方便大家学习,我把这个项目命名为DIOCP,上传在google的SVN项目中https://code.google.com/p/diocp/大家可以通过svn下载代码,里面我写了一个Echo的测试Demo,准备后续加入聊天等Demo。特地为DIOCP开设了一个群:320641073,欢迎学习的I 阅读全文
posted @ 2013-05-18 16:26 D10.天地弦 阅读(1784) 评论(0) 推荐(1) 编辑
摘要: Delphi-IOCP 共同学习研究群号 320641073iocp的学习和交流。 阅读全文
posted @ 2013-05-11 16:28 D10.天地弦 阅读(420) 评论(0) 推荐(0) 编辑
摘要: declare cnt number; begin ---查询要创建的表是否存在 select count(1) into cnt from cols where table_name = upper('sys_CustomReport') and column_name = upper('FConfig'); ---如果存在则删除该表 if cnt<1 then execute immediate 'ALTER TABLE sys_CustomReport ADD FConfig Blob'; end... 阅读全文
posted @ 2013-05-09 13:46 D10.天地弦 阅读(439) 评论(0) 推荐(0) 编辑
摘要: DECLARE @DateStart DATETIME, @DateEnd DATETIME, @Date DATETIME SELECT @Date = GETDATE()--一个月的开始SELECT @DateStart = CAST(FLOOR(CAST(@Date as Numeric(18,10))) + 1 - DAY(@Date) as DATETIME)--一个月的结束 SELECT @DateEnd=DATEADD(ms, -3, DATEADD(MM, 1, @DateStart))--------一个月的开始和结束... 阅读全文
posted @ 2013-05-03 16:14 D10.天地弦 阅读(431) 评论(0) 推荐(0) 编辑
摘要: procedure TFormMain.btn1Click(Sender: TObject);begin //加载dll TReportConsoleLibWrapper.checkInitialize; try //创建一个接口,由DLL创建 with TReportConsoleLibWrapper.createReportConsole(createDefaultOperator) do try //调用接口方法,显示窗体 ShowConsole; finally //调用接口方法,释放窗体 FreeConsole; ... 阅读全文
posted @ 2013-05-02 20:35 D10.天地弦 阅读(518) 评论(0) 推荐(0) 编辑
摘要: 经过一段时间的研究和学习,对IOCP的原理和流程都有了一定的了解,测试的Demo结果显示在局域网内轻轻松松处理5000个左右的连接,还是比较稳定的。运行Echo测试几个小时后。服务端内存稳定在60M左右。这两天对原始代码进行了封装,封装成了一套IOCP类。原始的API调用,对于研究和学习IOCP的原理还是比较好的。封装后,如果没有较好的文档,可能比较难理解。1.发送数据流程图2.服务回写数据流程2.IOCP对象中心2.1 TIOCPObject IOCP对象中心,创建IOCP句柄,开启侦听端口。 提供处理数据,接收套接字,投递接收请求,投递发送请求。 2.2 TIOCPClientCon... 阅读全文
posted @ 2013-04-27 16:17 D10.天地弦 阅读(1373) 评论(2) 推荐(2) 编辑
摘要: 有点意外,没想到我51上面的简历,会被猎头看上。 上了30岁,很多激情没有了。。。 也确实向往一份稳定安逸的工作。 阅读全文
posted @ 2013-04-25 14:40 D10.天地弦 阅读(621) 评论(0) 推荐(0) 编辑
摘要: 刚刚的测试,服务端上图开了5个客户端<每个客户端1000>进行测试。内存视乎不是很多。客户端的发过来的数据包大小在4096+88字节左右。测试Echo测试线程procedure TfrmMain.btnEchoTesterClick(Sender: TObject);var lvEchoTester:TEchoTester; i:Integer;begin for I := 1 to StrToInt(edtCount.Text) do begin lvEchoTester := TEchoTester.Create; lvEchoTester.TcpClient.Host... 阅读全文
posted @ 2013-04-25 09:21 D10.天地弦 阅读(2765) 评论(4) 推荐(3) 编辑
摘要: 现在IOCP的功能还剩下服务端数据的返回。还是采用netty的方式。netty返回数据的调用是这样的contenxt.write(<TObject> obj);这样将obj对象发送给客户端。1.将回传的对象进行编码成buffer2.通过socket进行传送.>>>>>>>>>>>>>>下面我贴出回传数据的过程.procedure TClientContext.writeObject(const pvDataObject:TObject);var lvOutBuffer:TBufferLink;beg 阅读全文
posted @ 2013-04-24 10:36 D10.天地弦 阅读(1377) 评论(0) 推荐(1) 编辑
摘要: 今天完成了第三点,初步按照netty 的做法制作了Decoder,由于我现在用的2007还没有泛型,所有我使用的返回TObject做法我先介绍下netty的处理数据的流程1.IOCP接收的数据。2.写入到套接字对应的缓存。3.调用Decoder,进行解码。4.如果解码成功调用套接字对应的数据处理方法。第一步和第二步我把他归纳到IOCP的底层通信要完成的功能。第三步在这里需要和客户端定义协议。和数据打包和拆包的格式。第四步处理具体的业务逻辑。下面我一一贴出代码第一步由IOCP完成。第二步if PerIoData.IO_TYPE = IO_TYPE_Recv thenbegin ... 阅读全文
posted @ 2013-04-23 11:28 D10.天地弦 阅读(2358) 评论(0) 推荐(2) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 25 下一页