fmx indy TCP haberleşmesi hakkında

FireMonkey ve Mobil uygulama (iOS, Android, Windows Phone) ile ilgili sorularınızı bu foruma sorabilirsiniz.
Cevapla
mcansız
Üye
Mesajlar: 6
Kayıt: 16 Eki 2014 04:20

fmx indy TCP haberleşmesi hakkında

Mesaj gönderen mcansız » 08 Ağu 2018 03:24

Merhabalar,

Delphi XE 10.2 de indy 10.6 verisyonunda basit TCP haberleşmesi yapıyorum. client ile bağlantıyı sağlayıp data gönderiyorum
bağlantıyı sonlandırabiliyorum. Ama server bağlantıyı kesince client bağlantı koptu şeklinde geri dönüş yapmıyor. Nerede hata yapıyorum.

teşekkürler.

kodlarım şöyle:

client;

Kod: Tümünü seç


procedure TForm1.baglanClick(Sender: TObject);
begin

    IdTCPClient1.Host:=Edit1.Text;
    IdTCPClient1.Port:=strtoint(Edit2.Text);
    try

    if (IdTCPClient1.Connected) then
    begin
    Timer1.Enabled:=false;
    idTcpClient1.IOHandler.InputBuffer.clear;
    
      IdTCPClient1.Disconnect;

    end

    else if (not IdTCPClient1.Connected ) then

    begin

     IdTCPClient1.Connect;
    end ;


    Except
    //on E: Exception do
    ShowMessage('Bağlantı hatası , internet ve cihazı kontrol edin');
    labelinfo.Text:=' Bağlantı KOPTU ';

    end;


end;


procedure TForm1.IdTCPClient1Connected(Sender: TObject);
begin
kesme.Create;
labelinfo.Text:=' Bağlantı Sağlandı ';

IdTCPClient1.IOHandler.Writeln('OK');

Timer1.Enabled:=true;





end;


procedure TForm1.IdTCPClient1Disconnected(Sender: TObject);
begin

labelinfo.Text:=' Bağlantı KOPTU ';
end;

server:

Kod: Tümünü seç


procedure TForm1.Button1Click(Sender: TObject);
begin
  if (IdTCPServer1.Active) then
  begin
     IdTCPServer1.Active:=false;
     Button1.Text:='OPEN PORT';

  end
  else
  begin
    IdTCPServer1.Active:=true;
    Button1.Text:='CLOSE PORT';
  end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
IdTCPServer1.Free;

end;

procedure TForm1.IdTCPServer1Connect(AContext: TIdContext);
var PeerIP : String;
begin

Label1.Text:='open';


end;

procedure TForm1.IdTCPServer1Disconnect(AContext: TIdContext);
begin
Label1.Text:='discon';


end;


Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1308
Kayıt: 07 May 2009 09:42
Konum: İstanbul
İletişim:

Re: fmx indy TCP haberleşmesi hakkında

Mesaj gönderen SimaWB » 08 Ağu 2018 05:20

Sunucu kapandığında TCPClient'ın OnDisconnected olayı tetiklenmez. Maalesef o olay sadece IdTCPClient1.Disconnect() methodunu kullandığınızda tetiklenir.
Sunucunun kapandığını anlamak için periyodik olarak veri okumaya/yazmaya çalışmalısınız.
There's no place like 127.0.0.1

mcansız
Üye
Mesajlar: 6
Kayıt: 16 Eki 2014 04:20

Re: fmx indy TCP haberleşmesi hakkında

Mesaj gönderen mcansız » 08 Ağu 2018 06:27

SimaWB yazdı:
08 Ağu 2018 05:20
Sunucu kapandığında TCPClient'ın OnDisconnected olayı tetiklenmez. Maalesef o olay sadece IdTCPClient1.Disconnect() methodunu kullandığınızda tetiklenir.
Sunucunun kapandığını anlamak için periyodik olarak veri okumaya/yazmaya çalışmalısınız.
merhaba cevabınız için teşekkür ederim. o zaman server sürekli belli data gönderecek client timer kurup sürekli data geliyormu diye bakacak.

UDP haberleşmesinde böyle yapıyordum.

TCP bu işleri kendi ayarlıyor zannediyorum ama pek fark yok gibi.

Cevapla