servis ve Socket problemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

servis ve Socket problemi

Mesaj gönderen m_ekici »

Merhaba Arkadaşlar

TServerSocket ve client ile yaptığım testler problemsiz çalışıyor. gönderme ve cevaplar sıkıntısız geliyor. Server tarafını bir servis içerisine yazdığımda bağlantı sağlanıyor, onClientRead tetikleniyor fakat Socket.ReceiveText boş geliyor. Bunun sebebi ne olabilir?

İyi Çalışmalar
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: servis ve Socket problemi

Mesaj gönderen ikra »

Ilk aklima gelen soketin handle degeri almamis olmasiydi fakat clientreceivenin tetiklenmesi bu ihtimali devre disi birakiyor.

Veriyi nasil gönderiyorsun?
Veri partinin büyüklügü ne?
Receivelength hangi degeri veriyor?
kıdemsiz üye
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: servis ve Socket problemi

Mesaj gönderen m_ekici »

sadece 'test' gönderiyorum. veriyi arttırdım, şimdi bazen gidiyor bazen gitmiyor. DataSnap kullanalım dedik Professional versiyonda yok imiş?
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: servis ve Socket problemi

Mesaj gönderen ikra »

Receivelength'e baktiniz mi? Clientread tetikleniyorsa receivelength sifirdan büyük olmali. Eger sifirdan büyük ise receivebuf vasitasi ile veriyi okumayi deneyin. Normalinde mesajin sorunsuz gelmesi gerek. Aksi taktirde veri gönderen taraf hata mesaji verir.
kıdemsiz üye
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: servis ve Socket problemi

Mesaj gönderen SimaWB »

ikra yazdı:Receivelength'e baktiniz mi? Clientread tetikleniyorsa receivelength sifirdan büyük olmali. Eger sifirdan büyük ise receivebuf vasitasi ile veriyi okumayi deneyin. Normalinde mesajin sorunsuz gelmesi gerek. Aksi taktirde veri gönderen taraf hata mesaji verir.
ikra muhtemelen sen biliyorsundur ama bilmeyenler için bilgi: socket UDP ise gönderen taraf hata vermez. (En azında ben öyle tahmin ediyorum :) )
There's no place like 127.0.0.1
Kullanıcı avatarı
baypipox
Üye
Mesajlar: 122
Kayıt: 16 Eki 2006 04:23
İletişim:

Re: servis ve Socket problemi

Mesaj gönderen baypipox »

ben genelde thread içinde kullanarak, Clientsocket1.Socket.ReceiveText şeklinde okuyorum, şimdiye kadar böyle bir problemle karşılaşmadım.
algoritmam aşağıdaki gibi basit;

///thread
var
text:string;
begin
sleep(10); bunu koymazsak thread içine işlemci seviyemiz coşabilir...
text:=Clientsocket1.Socket.ReceiveText; //ilk başta okuyorum
if text='' then exit; //boş ise çıkıyorum.
if length(text) < 3000 then // gelen verinin uzunluğuna bakıyorum
begin
sleep(1000); //sonra tahmini olarak, gelen verenin uzunluna göre bekletip bir daha okuyorum...
text:=text+Clientsocket1.Socket.ReceiveText;
end;
end;

Not: Bazen network sorunlarından ötürü alt alta hiç bekletmeden birkaç kere okumak hasıl oluyor...
text:=Clientsocket1.Socket.ReceiveText;
text:=text+Clientsocket1.Socket.ReceiveText;
text:=text+Clientsocket1.Socket.ReceiveText;

Belki threadle deneyebilirsin. breakpointle gitmeyi ve loglamayı zaten denemişsindir...

iyi çalışmalar...
omurolmez
Üye
Mesajlar: 187
Kayıt: 31 Eki 2012 11:41

Re: servis ve Socket problemi

Mesaj gönderen omurolmez »

Servis uygulamasıysa breakpoint olamayacak bildiğim kadarıyla. Ancak loglanabilir. Ama en güzeli ayrı thread ile denemek. Daha doğrusu, servis te çalışacak kodu, önce normal uygulama tamamlayıp test etmek ve tabiri caizse yorumlarını dahi değiştirmeden servis uygulamasına yapıştırmak gerekiyor. Elle aktarım yaparken insan gözünden birşey kaçırıyor. Debugger da çalıştırma şansı olmadığı için tırmalayıp duruyor.
Ömür Ölmez
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: servis ve Socket problemi

Mesaj gönderen SimaWB »

Servis uygulamalarında TService.LogMessage methodunu kullanarak çok kolay programınızı log'layabilirsiniz.
Tabiki log'larınızı Windows Olay Görüntüleyicisi --> Windows Günlükleri --> Uygulama altında görebileceksiniz.
There's no place like 127.0.0.1
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: servis ve Socket problemi

Mesaj gönderen m_ekici »

Tşk Arkadaşlar, thread a gerek kalmadan çalıştı. Threadı denemeye vaktim yok. Başka bir projede deneriz inş. Olay görüntüleyiciye bakmak hiç aklıma gelmedi. tşk
Cevapla