delphi之IOCP学习(一)

delphi之IOCP学习(一)
困扰已久的网络通信(IOCP:完成端口),今天终于揭开她的神秘面纱了,之前百度N久还是未能理解IOCP,网络上好多博文都没有贴出源码,初学者很难正在理解IOCP并自己写出通信例子 ,经过努力,今天自己终于做出了简单的测试程序,下面贴出源码,水平有限,难免有错,希望不要误人子弟。

1、Svr主窗体

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
unit Umain;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, UIOCPSvr;

type
TForm1 = class(TForm)
Button1: TButton;
mmoRev: TMemo;
procedure Button1Click(Sender: TObject);
private
IOCPSvr: TIOCPSvr;
{ Private declarations }
public
{ Public declarations }

end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
IOCPSvr := TIOCPSvr.Create(Self);
IOCPSvr.Host := ‘192.168.1.86’;
IOCPSvr.Port := 8988;
IOCPSvr.open;
end;

end.
   2、IOCP 服务端实现代码

复制代码
1 unit UIOCPSvr;
2
3 interface
4
5 uses
6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, StdCtrls, JwaWinsock2;
8
9 const
10 DATA_BUFSIZE = 1024;
11
12 type
13 LPVOID = Pointer;
14 {* 完成端口操作定义 *}
15 TIocpOperate = (ioNone, ioCon, ioRead, ioWrite, ioStream, ioExit);
16 PIocpRecord = ^TIocpRecord;
17 TIocpRecord = record
18 Overlapped: TOverlapped; //完成端口重叠结构
19 WsaBuf: TWsaBuf; //完成端口的缓冲区定义
20 IocpOperate: TIOCPOperate; //当前操作类型
21 end;
22
23 type
24 TThreadRev = class(TThread)
25 private
26 pData: Pointer;
27 protected
28 procedure Execute; override;
29 public
30 constructor Create(CreateSuspended: Boolean; adata: Pointer);
31 destructor Destroy; override;
32 end;
33
34
35 TThreadCon = class(TThread)
36 private
37 PSocket: TSocket;
38 lvIOPort: THandle;
39 protected
40 procedure Execute; override;
41 public
42 constructor Create(CreateSuspended: Boolean; var aSocket: TSocket; var aIOport: THandle);
43 destructor Destroy; override;
44 end;
45
46
47 TIOCPSvr = class(TComponent)
48 private
49 FHost: string;
50 FPort: Integer;
51 ThreadCon: TThreadCon;
52 ThreadRev: TThreadRev;
53 protected
54 public
55 con

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值