ServerSocket的serverType使用stThreadBlocking,为什么只要有客户端连接到服务端来,CPU占100%。不启用线程也是同样问题,请问大家,这种情况如何处理?
procedure TfrmMain.SocketWatcherGetThread(Sender: TObject;
ClientSocket: TServerClientWinSocket;
var SocketThread: TServerClientThread);
var
HostThread: TSendServerThread;
strThdl: string;
StrSrkHdl:string;
begin
StrSrkHdl := inttoHex(ClientSocket.Handle, 8);
MMDetail.Lines.add(DateTimeToStr(Now)+' ->客户端--SOCKET句柄号: ' + strSrkHdl +'--IP及端口号: '+ClientSocket.RemoteAddress+':'+inttoStr(ClientSocket.RemotePort)+ '已连接..');
Inc(Connct);
MMDetail.Lines.add('建立连接数:'+IntToStr(Connct));
closesocket(ClientSocket.Handle);
try
{gTraceLock.Enter;
HostThread := TSendServerThread.Create(true, ClientSocket,SOCKETMODE_BSM,1);
MMDetail.Lines.add(DateTimeToStr(Now) + '创建服务线程, 句柄: ' + strThdl + ' ' +
'成功..');
gTraceLock.Leave;
HostThread.FreeOnTerminate := True;
HostThread.m_MonFlag := chbShow.Checked;
HostThread.m_MainHwnd := Handle;
HostThread.Resume; }
Inc(LiveTH);
//ShowMonitorInfo(ClientSocket.RemoteAddress+'连接');
except
MMDetail.Lines.add('创建服务线程, 失败..');
end;
end;
procedure TfrmMain.SocketWatcherGetThread(Sender: TObject;
ClientSocket: TServerClientWinSocket;
var SocketThread: TServerClientThread);
var
HostThread: TSendServerThread;
strThdl: string;
StrSrkHdl:string;
begin
StrSrkHdl := inttoHex(ClientSocket.Handle, 8);
MMDetail.Lines.add(DateTimeToStr(Now)+' ->客户端--SOCKET句柄号: ' + strSrkHdl +'--IP及端口号: '+ClientSocket.RemoteAddress+':'+inttoStr(ClientSocket.RemotePort)+ '已连接..');
Inc(Connct);
MMDetail.Lines.add('建立连接数:'+IntToStr(Connct));
closesocket(ClientSocket.Handle);
try
{gTraceLock.Enter;
HostThread := TSendServerThread.Create(true, ClientSocket,SOCKETMODE_BSM,1);
MMDetail.Lines.add(DateTimeToStr(Now) + '创建服务线程, 句柄: ' + strThdl + ' ' +
'成功..');
gTraceLock.Leave;
HostThread.FreeOnTerminate := True;
HostThread.m_MonFlag := chbShow.Checked;
HostThread.m_MainHwnd := Handle;
HostThread.Resume; }
Inc(LiveTH);
//ShowMonitorInfo(ClientSocket.RemoteAddress+'连接');
except
MMDetail.Lines.add('创建服务线程, 失败..');
end;
end;
请LZ自问自答好吗,都是学习