Delphi 2007 içerisinden çıkan indy TIdTCPServer componentini kullanarak bir uygulama yapmaya çalışıyorum.
2 adet sorunla karşılaştım. 1 tanesini çözdüm fakat yaptığım işin doğrumu olduğunu tam olarak bilmiyorum.
1.Server ile bağlantıyı kesmek istediğimde program TCPServer.Active := False; işleminden sonra program donup kalıyor
çalıştırdığım kod aşağıda bunun nedeni ne olabilir.
2. Eğer ben bağlanan bir cliente server üzerindeki Context üzerinden ulaşıp bilgi gönderirsem
"( TIDContext(TCPServer.Contexts.LockList.Items[0]).Connection.Socket.WriteLn(SendData); )"
yada bir kontrol yapmaya kalkarsam
" ( if TIDContext(TCPServer.Contexts.LockList.Items).Binding.PeerIP = 'xxx.xxx.xxx.xxx' ) "
program bu noktada kilitleniyordu indy componentlerinden IdAntiFreeze componentini form üzerine koyduğumda 2 maddedeki kilitlenme olayı çözüldü
fakat halen 1. maddedeki kilitlenme devam ediyor nedenini bulamadım.
yardımlarınız için teşekkürler.
Kod: Tümünü seç
procedure TForm3.BtnServerKesClick(Sender: TObject);
var
Cont:TIdContext;
i:integer;
begin
for i:=TCPServer.Contexts.LockList.Count-1 downto 0 do
begin
Cont:=TIdContext(TCPServer.Contexts.LockList.Items[i]);
Cont.Connection.Disconnect;
end;
TCPServer.Contexts.Clear;
TCPServer.Contexts.UnLockList;
TCPServer.Active := False;
ShowMessage('Bağlantı Kesildi');
end;