TCP/IP Veri Gönderme - ÇÖZÜLDÜ

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
akissoftware
Üye
Mesajlar: 118
Kayıt: 17 Ağu 2010 09:08

TCP/IP Veri Gönderme - ÇÖZÜLDÜ

Mesaj gönderen akissoftware »

S.a. cümleten

Şirketimizde kullandığımız bir programımız var. Bu program tcp/ip üzerinden (ip - port) veri okuyor.

Bu programa YET (Yet Another Terminal) vasıtasıyla bağlanıp "5005 188888E790 001<DC4>" komutunu gönderdiğim zaman problemsiz komutu alıyor. Ben aynı komutu Delphi içerisinden gönderdiğimde olmuyor. Bu konuda Delphinin ClientSocket, Indy IdTCPClient vs komponentleri denedim fakat hiç birinde başarılı olamadım.

Komutun sonundaki <DC4> komutu sanırım byte olarak göndermem gerekiyor. Bunu nasıl yapabilirim ?
En son akissoftware tarafından 01 Nis 2013 11:01 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: TCP/IP Veri Gönderme

Mesaj gönderen mkysoft »

wireshark+wincap gibi programları kullanarak hem YET programının hemde sizin programın gönderdiği veri paketlerini inceleyip karşılaştırabilirsiniz.
akissoftware
Üye
Mesajlar: 118
Kayıt: 17 Ağu 2010 09:08

Re: TCP/IP Veri Gönderme

Mesaj gönderen akissoftware »

O şekilde göremiyorum ne yazıkki... Yani benim gönderdiğim veya Yat'ın gönderdiğini düzgün karakter şeklinde göremiyorum :S
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: TCP/IP Veri Gönderme

Mesaj gönderen SimaWB »

Wireshark'ta hertürlü görebilirsiniz. İster Hex olarak, ister Printable Text olarak görürsünüz.
Bu arada; DC4, byte olarak 20 demektir.
There's no place like 127.0.0.1
akissoftware
Üye
Mesajlar: 118
Kayıt: 17 Ağu 2010 09:08

Re: TCP/IP Veri Gönderme

Mesaj gönderen akissoftware »

Dosyada ekledigim gibi bundan başka bir veri göremiyorum. O söylediklerinizi hangi komutla görebilirim ?
Dosya ekleri
ornek.zip
(150.23 KiB) 138 kere indirildi
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: TCP/IP Veri Gönderme

Mesaj gönderen SimaWB »

Resimde, Wireshark'ta sizin seçtiğiniz satırda data görememeniz normal. TCP protokolü gereği sizin gönderdiğiniz mesajlar dışında da bir takım mesajlar gidip gelir. Seçtiğiniz satır Acknowledge mesajına ait. Yani TCP protokolü ile alakalı bir mesaj. İzleme penceresinde seçtiğiniz satırın en sonunda Len=0 yazıyor. Buradaki Len paketteki data boyutunu gösteriyor. Siz Len'in sıfırdan farklı olduğu satırlara bakın.
Daha önceki mesajımda DC4'ü yazmıştım. Gönderdiğiniz mesaja bunu da ekleyip göndermeyi denediniz mi? Belki o şekilde probleminiz çözülür.
There's no place like 127.0.0.1
akissoftware
Üye
Mesajlar: 118
Kayıt: 17 Ağu 2010 09:08

Re: TCP/IP Veri Gönderme

Mesaj gönderen akissoftware »

Tekrar merhaba...

Wireshark ile önce YAT ile gönderdim (kabul edilen komut) ardından Delphi içerisinden gönderdim. Bu paketleri toplayıp dosyayı buraya ekledim. Yardımcı olduğunuz için çok teşekkür ediyorum
Dosya ekleri
Paket.zip
(84.25 KiB) 133 kere indirildi
akissoftware
Üye
Mesajlar: 118
Kayıt: 17 Ağu 2010 09:08

Re: TCP/IP Veri Gönderme

Mesaj gönderen akissoftware »

Kafam allak bullak oldu... Bir türlü komutu kabul ettiremedim. Dandik VisualBasic ile yollasam sanırım hemen olacak. YAT ile kabul eden komut neden Delphi ile gönderilince olmaz...
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: TCP/IP Veri Gönderme

Mesaj gönderen SimaWB »

Gönderdiğiniz dosyada hangisi YAT ile, hangisi Delphi ile gönderilmiş anlamak çok zor. Daha anlaşılır log'lar gönderirseniz yardımcı olmaya çalışayım.
Aslında siz de Wireshark'ta inceleme yaparak YAT ve Delphi ile gönderilenler arasındaki farkı bulabilirsiniz.
There's no place like 127.0.0.1
akissoftware
Üye
Mesajlar: 118
Kayıt: 17 Ağu 2010 09:08

Re: TCP/IP Veri Gönderme

Mesaj gönderen akissoftware »

Merhaba

Paketleri tekrar gönderip ekran görüntülerini koydum...
Delphiden yolladığımda <DC4> komutu direkt gidiyor. Fakat YAT ile yollananda sanki enter tuşu gönderiyor gibi...

Resimler size daha iyi bilgi verecektir...

http://www.kumko.net/Delphi.JPG
http://www.kumko.net/Yat.JPG

Yardımlarınızı bekliyorum
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: TCP/IP Veri Gönderme

Mesaj gönderen SimaWB »

Resimlere bakılırsa YAT 20 byte veri göndermiş Delphi 25 byte. Delphide siz string olarak <DC4> göndermişsiniz. Bu da 5 byte yapar. Daha öncede söylediğim gibi; DC4 göndermeniz gerekiyorsa, gönderdiğiniz bufferın sonuna Byte(20) eklemeniz yeterli olacaktır.
Yine gönderdiğiniz resme bakılırsa YAT'la gönderilen paketin sonunda DC4 yok. En son 3 sıfır var.
Tam olarak gönderilmek istenen data nedir?
Denediğiniz Delphi kodlarını gösterirseniz belki daha çabuk yardımcı olabilirim.
There's no place like 127.0.0.1
akissoftware
Üye
Mesajlar: 118
Kayıt: 17 Ağu 2010 09:08

Re: TCP/IP Veri Gönderme

Mesaj gönderen akissoftware »

Normalde YAT dan gönderirken ip ve portu ayarladıktan sonra 5005 188888E130 000<DC4> yazıp enterlemem yeterli oluyor. Wiresharkt ile gelen kodu daha önce ekledim zaten...

Burasıda benim Delphi ile göndermeye çalıştığım kod. Byte20 olarak nasıl göndereceğim bir örnek verebilir misiniz? Bu konularda hiç bilgim yok :S

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText('5005 188888E130  000');
end;
akissoftware
Üye
Mesajlar: 118
Kayıt: 17 Ağu 2010 09:08

Re: TCP/IP Veri Gönderme

Mesaj gönderen akissoftware »

Kodu aşağıdaki gibi değiştirince çalıştı. Yardımcı olan tüm arkadaşlara çok çok teşekkürler...

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
max : Byte;
begin
max:=20;
ClientSocket1.Socket.SendText('5005 188888E790  000');
ClientSocket1.Socket.SendBuf(max,20);

end;
Cevapla