关于delphi7如何解决idtcpserver 的CurrentReadBuffer的阻塞问题
如题,在indy 编程中,我需要用服务端接收多个客户端的信息,并根据客户端信息返回不同的结果
with AThread.Connection do
begin
try
//EnterCriticalSection(CS);
Tmpstr:=CurrentReadBuffer;
AThread.Synchronize(Addtmpstr);
if iRet >= 0 then
begin
Writeln(inttostr(iRet));
end
else
begin
writeln('匹配失败或非法数据');
end;
// LeaveCriticalSection(CS);
tmpstr,iret为全局变量,iret在addtmpstr中被赋值(与tmpstr值有关),如果不设临界区的话就会出现多个线程之间相互干扰的现象(不如客户端1收到的是本应该是2的值),如果设临界区的话(把//打开),如果其中一个客户端只建立连接而不发送数据的话,线程就会阻塞在Tmpstr:=CurrentReadBuffer;这里,临界区无法释放,其他客户端就无法与服务器交流。