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:

Socket Problemi

Mesaj gönderen m_ekici »

s.a.
TServerSocket'e ve TClientSocket'dan aşağıdaki kod ile text gönderiyorum.

Kod: Tümünü seç

LSocket.Host := dbf.DllHost;
LSocket.Port := dbf.DllPort;
LSocket.Active := true;
STxt := 'info : ('+IntToStr(Tur) + ')(' + IntToStr(AkN) + ')';
LSocket.Socket.SendText(STxt);
LSocket.Socket.SendText('2.Satır-------');
LSocket.Socket.SendText('3.Satır-------');
LSocket.Socket.SendText('4.Satır-------');
LSocket.Close;
Server (TServerSocket ) tarafından OnAccept, OnClientConnnect, OnClientDisconnect eventleri tetikleniyor, fakat OnClientRead tetiklenmiyor. Neden olabilir?
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2381
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Socket Problemi

Mesaj gönderen freeman35 »

unicode problem yaratabilir belki, göndereceğin string i ansistring e çevirip göndermeyi dene
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: Socket Problemi

Mesaj gönderen m_ekici »

Denemiştim onu. onRead de hiçbirşey gelmiyor. Daha doğrusu OnClientRead procedurune hiç gitmiyor.
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Socket Problemi

Mesaj gönderen SimaWB »

ServerType := stNonBlocking şeklinde kullanıyorsanız TClientSocket'i aktif eder-etmez mesaj göndermemelisiniz. TClientSocket'in OnConnect eventini beklemek zorundasınız. Tahminim problemin kaynağı bu.
There's no place like 127.0.0.1
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Socket Problemi

Mesaj gönderen mrmarman »

@SimaWB haklı,

Her Connect işlemiyle yapılacak gönderiden sonra socket'i close ediyorsanız; SENDTEXT kodlarınızı TClientSocket'in OnConnect eventine yazmalısınız. Direkt

Kod: Tümünü seç

Socket.SendText( strGonderi );
şeklinde yazabilirsiniz.
Resim
Resim ....Resim
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: Socket Problemi

Mesaj gönderen m_ekici »

onConnect de gönderdiğimde yine gitmedi. (zannettim) Fakat ard arda 2 adet gönderdim 2.si gitti. 1. si kayboluyor. ?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Socket Problemi

Mesaj gönderen mrmarman »

Merhaba.

Sana küçük bir örnek hazırladım. Bu mesajın ekinde.

- Örnekte
1. Bir ServerSocket projesi bir de ClientSocket projesi iki farklı klasörde yer alıyor.
2. ServerSocket açık değilken ClientSocket bağlantısı başarısız olduğunda hata kodu ile algılanması.
3. Gönderilen mesajın ulaştığına ilişkin geri-besleme teyit edilmesi mekanizması.

ele alınmıştır.

ServerSocket
Resim

ClientSocket
Resim
Dosya ekleri
SocketOrnegi.rar
Delphi ServerSocket-ClientSocket Projeleri Kaynak Kodları
(19.42 KiB) 104 kere indirildi
Resim
Resim ....Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Socket Problemi

Mesaj gönderen mrmarman »

Sorduğun sorudan şunu unuttuğumu fark ettim.

Bağlanır bağlanmaz mesaj gönderip bağlantıyı kesmesi.

Aşağıdaki örneği de eklersen; ClientSocket projesinde xGonderi global değişkenine bir değer verir ondan sonra bağlantı kurarsan sistem bu değeri gördüğünden otomatik olarak SENDTEXT ile gönderir ve bağlantıyı sonlandırır. :idea:

Kod: Tümünü seç

Var
  xGonderi : String;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  xGonderi := 'Bağlandım ve Gönderdim...';
  ClientSocket1.Address := Edit1.Text;
  ClientSocket1.Port    := SpinEdit1.Value;
  ClientSocket1.Active  := True;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  if xGonderi <> '' then begin
    Socket.SendText( xGonderi );
    xGonderi := '';
    TClientSocket(Sender).Active := False;
  end;
end;
Başarlar.
:bravo:
Resim
Resim ....Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Socket Problemi

Mesaj gönderen mrmarman »

Merhaba.

Forumda ve netteki diğer forumlarda oldukça fazla Delphi XE5 sorusu görünce ben de embarcadero'dan indirip bilgisayarıma kurdum...
Bu örneği XE5'de açtım ve çalıştırdım. Sorunsuz çalışıyor. TEST edildi, onaylandı.
:bravo:
Resim
Resim ....Resim
Cevapla