DELPHI中完成端口(摘自掰掰开发)

DELPHI中完成端口(摘自掰掰开发)

ID:37919513

大小:65.50 KB

页数:18页

时间:2019-06-02

DELPHI中完成端口(摘自掰掰开发)_第1页
DELPHI中完成端口(摘自掰掰开发)_第2页
DELPHI中完成端口(摘自掰掰开发)_第3页
DELPHI中完成端口(摘自掰掰开发)_第4页
DELPHI中完成端口(摘自掰掰开发)_第5页
资源描述:

《DELPHI中完成端口(摘自掰掰开发)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、DELPHI中完成端口(IOCP)的简单分析出自掰掰开发-http://www.88dev.com/用DELPHI开发网络代码已经有一段时间了!我发现在网上用VC来实现完成端口(IOCP)的代码很多,但是使用DELPHI来实现的就比较少了。对IOCP讲的清楚的就更少了。在这里我把自己编写DELPHI下的IOCP写出来,希望对刚学完成端口的朋友有个帮助。首先我们来了解一些在使用IOCP的时候需要使用的一些结构!(1):单IO数据结构  LPVOID=Pointer;  LPPER_IO_OPERATION_DATA=^PER_IO_OPERATION_DATA;  PER_IO

2、_OPERATION_DATA=packedrecord  Overlapped:OVERLAPPED;  DataBuf:TWSABUF;  Buffer:array[0..1024]ofCHAR;  BytesSEND:DWORD;  BytesRECV:DWORD;  end;上面的结构中Overlapped:OVERLAPPED;和DataBuf:TWSABUF;是固定的结构类型。Buffer:array[0..1024]ofCHAR;是用来保存接受数据的缓存。BytesSEND:DWORD;用来标志发送数据的长度。BytesRECV:DWORD;用来标志接受数据的长

3、度。因为完成端口的工作者线程可以接受到来自客户端的数据,同时还可以接受到自己发送给客户端的数据,所以我们使用BytesSEND,BytesRECV变量来说是用来区分这次的数据是来自客户端的数据还是自己发送出去的数据。详细的使用方法,我会在下面详细说明。(2):“单句柄数据结构”  LPPER_HANDLE_DATA=^PER_HANDLE_DATA;  PER_HANDLE_DATA=packedrecord  Socket:TSocket;  end;下来我从编写一个完成端口的为例说明。ifWSAStartUp($202,wsData)<>0thenbegin  WSACl

4、eanup();end;加载SOCKET。我使用的是2.2版为了后面方便加入心跳。CompletionPort:=CreateIOCompletionPort(INVALID_HANDLE_VALUE,0,0,0);创建一个完成端口。GetSystemInfo(LocalSI);forI:=0toLocalSI.dwNumberOfProcessors*2-1dobegin  hThread:=CreateThread(nil,0,@ServerWorkerThread,DELPHI中完成端口(IOCP)的简单分析出自掰掰开发-http://www.88dev.com/用DE

5、LPHI开发网络代码已经有一段时间了!我发现在网上用VC来实现完成端口(IOCP)的代码很多,但是使用DELPHI来实现的就比较少了。对IOCP讲的清楚的就更少了。在这里我把自己编写DELPHI下的IOCP写出来,希望对刚学完成端口的朋友有个帮助。首先我们来了解一些在使用IOCP的时候需要使用的一些结构!(1):单IO数据结构  LPVOID=Pointer;  LPPER_IO_OPERATION_DATA=^PER_IO_OPERATION_DATA;  PER_IO_OPERATION_DATA=packedrecord  Overlapped:OVERLAPPED; 

6、 DataBuf:TWSABUF;  Buffer:array[0..1024]ofCHAR;  BytesSEND:DWORD;  BytesRECV:DWORD;  end;上面的结构中Overlapped:OVERLAPPED;和DataBuf:TWSABUF;是固定的结构类型。Buffer:array[0..1024]ofCHAR;是用来保存接受数据的缓存。BytesSEND:DWORD;用来标志发送数据的长度。BytesRECV:DWORD;用来标志接受数据的长度。因为完成端口的工作者线程可以接受到来自客户端的数据,同时还可以接受到自己发送给客户端的数据,所以我们使

7、用BytesSEND,BytesRECV变量来说是用来区分这次的数据是来自客户端的数据还是自己发送出去的数据。详细的使用方法,我会在下面详细说明。(2):“单句柄数据结构”  LPPER_HANDLE_DATA=^PER_HANDLE_DATA;  PER_HANDLE_DATA=packedrecord  Socket:TSocket;  end;下来我从编写一个完成端口的为例说明。ifWSAStartUp($202,wsData)<>0thenbegin  WSACleanup();end;加载SO

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。