Indy TCP Server OnConnect ve OnDisconnect

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Jire
Üye
Mesajlar: 167
Kayıt: 07 Eki 2007 01:20

Indy TCP Server OnConnect ve OnDisconnect

Mesaj gönderen Jire »

Merhaba ilk önce sorunumu anlatayım.
Indy ile server client uygulaması yapmaya çalışıyorum ve şuana kadar sadece server'a bağlanmayı yapabildim.
Ben kişi girdimi server'ın bunu görüp ... IPli kişi giriş yaptı yapmaya çalışıyorum ama sonucunda şöyle birşey alırım.

Client'ten bağlandığım anda 192.168... giriş yaptı yazıyor ardından direk 192.168... çıkış yaptı yazıyor.
İkisinin arasında zaman farkı neredeyse yok yani giriş yaptı yazıyor 10 milisaniye falan geçiyo çıkış yaptı yazıyor.

ve TIdTCPServer'ın onconnect ve ondisconnect

Kod: Tümünü seç

procedure TSunucuForm.sunucuConnect(AThread: TIdPeerThread);
begin
  kayit_liste.Items.Add(AThread.Connection.Socket.Binding.PeerIP + ' giriş yaptı.');
end;

procedure TSunucuForm.sunucuDisconnect(AThread: TIdPeerThread);
begin
  kayit_liste.Items.Add(AThread.Connection.Socket.Binding.PeerIP + ' çıkış yaptı.');
end;

Ben Client'ten IdTCPServer.Disconnect(); yapana kadar çıkış yaptı yazmasını istemiyorum.. nasıl yapabilirim??
Yardım ederseniz çok süper olur :bravo:
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Indy TCP Server OnConnect ve OnDisconnect

Mesaj gönderen mkysoft »

Girenleri bir listede tutup, çıkışlarını kontrol etmelisin. Ayrıca programı kapatanlar olabileceğini düşünerek ara ara onların hala sistemi bağlı olup olmadığını kontrol edecek komutlarını geliştrimelisin. IRC'deki ping-pong gibi.
Kullanıcı avatarı
CemErgun
Üye
Mesajlar: 91
Kayıt: 05 May 2009 11:31
Konum: antalya

Re: Indy TCP Server OnConnect ve OnDisconnect

Mesaj gönderen CemErgun »

mkysoft, sunucuya bağlı olan kişileri timer ile nasıl listeleyebiliriz?
procedure TForm1.FormCreate(Sender: TObject);
begin
halt;
end;
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Indy TCP Server OnConnect ve OnDisconnect

Mesaj gönderen mkysoft »

timer ile listeleyemezsin, servera bağlanan ip leri bir array içinde tut. timer'ı mesala 15 saniyede bir çalıştır ve client makinalara PING diye bir metin yolla, client makina bu metni gördüğünde PONG geri göndersin, server bu mesajı aldığında array üzerinde işaretlesin, cevap gelmeyenleri listeden silsin.
Daha geniş bilgi için IRC protokolünü anlatan dökümanlara bakabilirsin.
Cevapla