idTcpServer共有几个线程(都已连接),在onExecute 中我参看indy的demo那样,用循环来访问每个连接,用writebuffer来发送,无问题,但一调用readbuffer后,虽不报错,但被调的那个线程就死了,是不是要用临界区还是什么呢?苦思不得其解。我的原意是:用一个连接来连接管理员,用其他连接来连接用户,当idTcpServer收到管理员指令的时候,即转发给其他连接上的用户,并读取该用户的返回值,并回发给管理员。现在管理员与用户端的代码均无错误,只是在 onExecute 中我一调用readbuff即该连接的线程就死了,不明白?还需老大们多指导!
var
FLock:TCriticalSection;//互斥类,用于线程互斥访问在 TForm1.FormCreate
FLock:=TCriticalSection.Create;
在线程里
FLock.Enter;...你的代码FLock.Leave;
begin
with AThread.Connection do
begin
ReadBuffer( ........ );
end;
end;
其次,你用readbuffer干什么,那个是接受客户端发送的信息的,然后解析收到的信息
你在接受的地方用readbuffer就会等待接受客户端发来的信息,所以你认为线程死了,其实一直在等待状态