client server uygulaması hakkında öneri

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
burakb44
Üye
Mesajlar: 131
Kayıt: 11 Mar 2005 03:13

client server uygulaması hakkında öneri

Mesaj gönderen burakb44 » 10 Nis 2012 09:31

arkadaşlar merhaba basit bir client server uygulaması yapmak istiyorum. yapmak istedigim şu çalışan bi exe program server diyelim buna client exeye bir satırlık bi bilgi gönderecek bunun için hangi bileşenleri nasıl kullanmalıyım. önerileriniz için şimdiden teşekkürler

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

Re: client server uygulaması hakkında öneri

Mesaj gönderen SimaWB » 11 Nis 2012 08:33

Indy bileşen setinin örneklerinde istediğinizi yapan birçok uygulama var
There's no place like 127.0.0.1

Kullanıcı avatarı
burakb44
Üye
Mesajlar: 131
Kayıt: 11 Mar 2005 03:13

Re: client server uygulaması hakkında öneri

Mesaj gönderen burakb44 » 11 Nis 2012 08:52

SimaWB yazdı:Indy bileşen setinin örneklerinde istediğinizi yapan birçok uygulama var

peki clientten servere mesaj gönderir gibi serverdardan clienta mesaj gönderebiliyormuyuz? aslında şöyle sorayım serverdan clientte nasıl bilgi göndereceğiz?

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

Re: client server uygulaması hakkında öneri

Mesaj gönderen SimaWB » 11 Nis 2012 09:05

Tabiki gönderebilirsiniz. Örneğin Server'ın onExecute olayında;

Kod: Tümünü seç

AContext.Connection.IOHandler.Write(Data);
There's no place like 127.0.0.1

Kullanıcı avatarı
burakb44
Üye
Mesajlar: 131
Kayıt: 11 Mar 2005 03:13

Re: client server uygulaması hakkında öneri

Mesaj gönderen burakb44 » 11 Nis 2012 09:06

SimaWB yazdı:Tabiki gönderebilirsiniz. Örneğin Server'ın onExecute olayında;

Kod: Tümünü seç

AContext.Connection.IOHandler.Write(Data);

bu bilgiler ışığında bi deneme yapayım , teşekkürler

Kullanıcı avatarı
burakb44
Üye
Mesajlar: 131
Kayıt: 11 Mar 2005 03:13

Re: client server uygulaması hakkında öneri

Mesaj gönderen burakb44 » 11 Nis 2012 12:19

SimaWB dediğin gibi serverin execute bölümünde bilgiyi clientte gönderdim clientten okurkende

GelenPaket := SampleClient.IOHandler.ReadLn;

kullandım fakat acces violation hatası verdi nasıl yapmam lazım

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

Re: client server uygulaması hakkında öneri

Mesaj gönderen SimaWB » 11 Nis 2012 02:02

BURADAN kullandığınız versiyon için örnekleri indirip inceleyebilirsiniz.
There's no place like 127.0.0.1

Kullanıcı avatarı
burakb44
Üye
Mesajlar: 131
Kayıt: 11 Mar 2005 03:13

Re: client server uygulaması hakkında öneri

Mesaj gönderen burakb44 » 11 Nis 2012 02:12

SimaWB yazdı:BURADAN kullandığınız versiyon için örnekleri indirip inceleyebilirsiniz.

linkteki örnekleri inceledim daha önce bahsettiğimiz durum ile alakalı bi açıklama yok yada ben göremedim. yani serverdan gelen bilgiyi clientten alan bi yöntem yokmu acaba ? çok mantıklı değil ama yok gibi görünüyor

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

Re: client server uygulaması hakkında öneri

Mesaj gönderen SimaWB » 11 Nis 2012 02:23

Linkteki örneklerde mesela Chat programı var. Client'lar bir server'a bağlanıyor ve birbirleriyle mesajlaşıyorlar. Dolayısıyla client'lar server'dan gelen bilgileri okuyorlar. Belirli periyodlarla Client'ın IO buffer'ında veri olup olmadığını kontrol edebilirsiniz.
Demodan alıntıdır:

Kod: Tümünü seç

procedure TfrmMain.Timer1Timer(Sender: TObject);
var
  i : integer;
  s : String;
begin
  if not Client.Connected then
    exit;

  I := Client.IOHandler.Buffer.Size;
  if I > 0 then
    begin
      SetLength(s, i);
      Client.IOHandler.ReadBuffer(s[1], i);
      memMsgs.Lines.add(Copy(s, 1, Length(s) -2));
    end;
end;
There's no place like 127.0.0.1

Kullanıcı avatarı
burakb44
Üye
Mesajlar: 131
Kayıt: 11 Mar 2005 03:13

Re: client server uygulaması hakkında öneri

Mesaj gönderen burakb44 » 11 Nis 2012 02:38

SimaWB yazdı:Linkteki örneklerde mesela Chat programı var. Client'lar bir server'a bağlanıyor ve birbirleriyle mesajlaşıyorlar. Dolayısıyla client'lar server'dan gelen bilgileri okuyorlar. Belirli periyodlarla Client'ın IO buffer'ında veri olup olmadığını kontrol edebilirsiniz.
Demodan alıntıdır:

Kod: Tümünü seç

procedure TfrmMain.Timer1Timer(Sender: TObject);
var
  i : integer;
  s : String;
begin
  if not Client.Connected then
    exit;

  I := Client.IOHandler.Buffer.Size;
  if I > 0 then
    begin
      SetLength(s, i);
      Client.IOHandler.ReadBuffer(s[1], i);
      memMsgs.Lines.add(Copy(s, 1, Length(s) -2));
    end;
end;

hocam buffer olayında hata veriyor :( malesef

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

Re: client server uygulaması hakkında öneri

Mesaj gönderen SimaWB » 11 Nis 2012 03:05

Keşke hata mesajında ne yazdığını biz de bilseydik :D
Kullandığınız Indy versiyonu farklı olabilir. Verdiğim örnek Indy 10 için.
There's no place like 127.0.0.1

Kullanıcı avatarı
burakb44
Üye
Mesajlar: 131
Kayıt: 11 Mar 2005 03:13

Re: client server uygulaması hakkında öneri

Mesaj gönderen burakb44 » 11 Nis 2012 03:47

SimaWB yazdı:Keşke hata mesajında ne yazdığını biz de bilseydik :D
Kullandığınız Indy versiyonu farklı olabilir. Verdiğim örnek Indy 10 için.
verdiği hata aşağıda

indy nin versiyonu 10.5.7

Resim
En son burakb44 tarafından 12 Nis 2012 08:31 tarihinde düzenlendi, toplamda 1 kere düzenlendi.

Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 07:56
Konum: yine yeniden Ankara ^_^

Re: client server uygulaması hakkında öneri

Mesaj gönderen unicorn64 » 11 Nis 2012 04:16

access violation hata mesajını buraya yazmak yerine resmini upload sitesine yüklemeniz de ilginç olmuş doğrusu :)
bu hata hafızada olmayan bir yere ulaşılmaya çalışıldığında oluşur,oluşturulmamış bir nesneye ulaşmak, 10 elemanlı bir dizinin 11. elemanına ulaşmaya çalışmak gibi.
mesela örnekteki kodda Client.IOHandler nil ise yani yoksa Client.IOHandler.Buffer a erişim sırasında bu hata oluşuyor olabilir...
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim

Kullanıcı avatarı
burakb44
Üye
Mesajlar: 131
Kayıt: 11 Mar 2005 03:13

Re: client server uygulaması hakkında öneri

Mesaj gönderen burakb44 » 11 Nis 2012 05:53

unicorn64 yazdı:access violation hata mesajını buraya yazmak yerine resmini upload sitesine yüklemeniz de ilginç olmuş doğrusu :)
bu hata hafızada olmayan bir yere ulaşılmaya çalışıldığında oluşur,oluşturulmamış bir nesneye ulaşmak, 10 elemanlı bir dizinin 11. elemanına ulaşmaya çalışmak gibi.
mesela örnekteki kodda Client.IOHandler nil ise yani yoksa Client.IOHandler.Buffer a erişim sırasında bu hata oluşuyor olabilir...
hoca sende yüzümüze vurma hemen linki acelece yaptım mesai bitimine denk geldi :) yoksa linkin öyle olmadığını bende biliyorum :))

Cevapla