L
lygzerg
Unregistered / Unconfirmed
GUEST, unregistred user!
小弟今天第一次学INDY,用在一个网络考试环境中。
问题1
代码:
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
begin
with AThread.Connection do
begin
ShowMessage('test');
Exit;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
IdTCPClient1.Host:=Edit1.Text;
IdTCPClient1.Port:=StrToInt(Edit2.Text);
IdTCPClient1.Connect;
IdTCPClient1.Disconnect;
end;
当客户端按下的时候,服务器端不段的弹出ShowMessage('test');,好象是个死循环,CPU使用率很快就100%了,搞不懂。
----------------------
问题2
当有好多个客户端连接上来的时候,如何定期测试这些客户端是否还在线?
----------------------
问题3
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
IP:string;
begin
//获取客户机IP
with AThread.Connection do
begin
IP:=AThread.Connection.Socket.Binding.PeerIP;
//查找DBGRID中是否已经存在
DataModule1.mainadoquery.Close;
DataModule1.mainadoquery.SQL.Clear;
DataModule1.mainadoquery.SQL.Add('select * from 考试状态 where IP='+''''+IP+'''');
DataModule1.mainadoquery.Open;
if DataModule1.mainadoquery.RecordCount<=0 then
begin
DataModule1.mainADOTable1.Append;
DataModule1.mainADOTable1.FieldByName('IP').Value:=IP;
DataModule1.mainADOTable1.Post;
DataModule1.mainADOTable1.Active:=true;
end;
}
Exit;
end;
end;
思路是:当有个客户断连接的时候,我会在数据表找查找是否存在这个IP,如果不在就加入,如果存在就显示在线,不知道是否有更好的办法。
INDY在多客户端并发的时候上面操纵数据表能进行么?我好象在调试的时候,提示不能在并法状态下进行操作,不知道为何?
------------------------
多谢前辈指教,在线等待!
问题1
代码:
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
begin
with AThread.Connection do
begin
ShowMessage('test');
Exit;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
IdTCPClient1.Host:=Edit1.Text;
IdTCPClient1.Port:=StrToInt(Edit2.Text);
IdTCPClient1.Connect;
IdTCPClient1.Disconnect;
end;
当客户端按下的时候,服务器端不段的弹出ShowMessage('test');,好象是个死循环,CPU使用率很快就100%了,搞不懂。
----------------------
问题2
当有好多个客户端连接上来的时候,如何定期测试这些客户端是否还在线?
----------------------
问题3
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
IP:string;
begin
//获取客户机IP
with AThread.Connection do
begin
IP:=AThread.Connection.Socket.Binding.PeerIP;
//查找DBGRID中是否已经存在
DataModule1.mainadoquery.Close;
DataModule1.mainadoquery.SQL.Clear;
DataModule1.mainadoquery.SQL.Add('select * from 考试状态 where IP='+''''+IP+'''');
DataModule1.mainadoquery.Open;
if DataModule1.mainadoquery.RecordCount<=0 then
begin
DataModule1.mainADOTable1.Append;
DataModule1.mainADOTable1.FieldByName('IP').Value:=IP;
DataModule1.mainADOTable1.Post;
DataModule1.mainADOTable1.Active:=true;
end;
}
Exit;
end;
end;
思路是:当有个客户断连接的时候,我会在数据表找查找是否存在这个IP,如果不在就加入,如果存在就显示在线,不知道是否有更好的办法。
INDY在多客户端并发的时候上面操纵数据表能进行么?我好象在调试的时候,提示不能在并法状态下进行操作,不知道为何?
------------------------
多谢前辈指教,在线等待!