下面是工作现成的代码(delphi)
procedure TWorkerThread.Execute;
var
Block: PBlock;
Transfered: DWORD;
ClientSocket: TServerClientSocket;
begin
while FServer.Active do
begin
Block := nil;
Transfered := 0;
ClientSocket := nil;
if not GetQueuedCompletionStatus(FServer.CompletionPort, Transfered,
DWORD(ClientSocket), POverlapped(Block), INFINITE) then
begin
end;
case ClientSocket.WorkBlock(Block, Transfered) of
//WorkBlock读取数据,调用WSARecv
//(WSARecv(FSocket, @wsaBuffer, 1, Transfer, Flags, @Overlapped, nil);)
RESPONSE_UNKNOWN:
{ 操作未知的话,应该返回给客户端:...不应该Close....保留 }
//FreeAndNil(ClientSocket);
;
RESPONSE_FAIL:
begin
end;
end;
end;
end;