|
盒子资源分类 |
![]() |
|
|
|
自己整的IOCP服务端VCL |
![]() |
关键字:IOCPSOCKET |
来 自:原创 |
平 台:Win2k/XP/NT,Win2003 |
下载所需:0 火柴 |
深浅度:中级 |
完成时间:2009/5/18 |
发布者:snoopy_teng |
发布时间:2009/5/19 |
编辑器:DELPHI7 |
语 种:简体中文 |
分 类:通信 |
下载浏览:3044/13499 |
|
|
|
|
自己整的IOCP服务端VCL 2009年4月1日最后修改工作线程问题 移除服务器端部分事件 |
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们! |
相关文章 |
|
![]() |
|
相关评论 |
![]() |
共有评论12条
当前显示最后6条评论
|
yao_ming |
2009/6/9 3:58:25 |
算你这个包装得好一点... |
softbug |
2009/7/13 23:40:39 |
IOCPServer1DataReceive(SocketHandle: Cardinal)
怎么用? |
snoopy_teng |
2009/7/31 20:23:32 |
procedure TServerForm.IOCPServerDataReceive(SocketHandle: Cardinal); var AConnection: TConnection; Node: TNode; PS: PTSession; pOutData: array of char; RecvLen: Integer; HeadLen, PacketLen: integer; PHead: PTHead; PClient: PTClient; PMsgtoSender: PTMsgtoSender; begin PS := GetSession(SocketHandle); if PS = nil then exit; AConnection := TConnection(PS^.Connection); if AConnection = nil then Exit; HeadLen := SIZE(P_HEAD); TStretchBuffer(PS^.RevBuffer).Lock; try RecvLen := AConnection.RecvIOData.Overlapped.InternalHigh; TStretchBuffer(Ps^.RevBuffer).WriteBuffer(@AConnection.RecvIOData.Buffer[0], RecvLen); while TStretchBuffer(PS^.RevBuffer).BufferSize >= HeadLen do |
cyf_fly |
2009/8/7 23:48:29 |
能否发个demo看看 |
sisha |
2009/11/17 17:13:07 |
procedure TIOCPServer.DoDataReceive(Socket: TSocket); begin Lock; try if Assigned(OnDataReceive) then OnDataReceive(Socket); finally UnLock; end; end;
这个Lock 问题很大。。。 |
sisha |
2009/11/17 17:15:26 |
procedure TCustomProcessor.Execute; 里面 只有
if errcode = ERROR_NETNAME_DELETED then FServer.DoClientDisConnect(HandleData^.Socket);
not GetQueuedCompletionStatus 里面只有 if errcode = ERROR_NETNAME_DELETED then?? 才需要 FServer.DoClientDisConnect(HandleData^.Socket); ? |
我要发表评论 |
查看全部评论 |
![]() |
|
|
|