📄 多线程.txt
字号:
它区分客户端A或B是要用到多线程的。
type
PClient =^TClient;
TClient = Record
DNS:String[20];
IP: String[20];
Thread:Pointer;
end;
var
Clients:TThreadList;
procedure TInforServer.IdTCPServer1Connect(AThread: TIdPeerThread);
var
NewClient:PClient;
begin
New(NewClient);
NewClient^.IP:=AThread.Connection.Socket.Binding.PeerIP;
NewClient^.Thread:=AThread;
AThread.Data:=TObject(NewClient);
try
Clients.LockList.Add(NewClient);
finally
Clients.UnlockList;
end;
end;
procedure TInforServer.IdTCPServer1Disconnect(AThread: TIdPeerThread);
var
ActClient:PClient;
begin
ActClient:=PClient(AThread.Data);
try
Clients.LockList.Remove(ActClient);
finally
Clients.UnlockList;
end;
dispose(ActClient);
AThread.Data:=nil;
end;
//停止多线程发送
while(index <= count)do
begin
if FDataThread[index]<>nil then
begin
FDataThread[index].Terminate;
FDataThread[index].WaitFor;
TransServer.ShowMsg(clBlue,'向客户端输出第%d线程已停止!ThreadId=%d,发送条数=%d,接收应答条数=%d',
[index,FDataThread[index].ThreadID,SndNum[index],RecvNum[index]]);
FDataThread[index].Free;
FDataThread[index] := nil;
end;
inc(index);
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -