TCP/IP Veri Gönderme - ÇÖZÜLDÜ
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 118
- Kayıt: 17 Ağu 2010 09:08
TCP/IP Veri Gönderme - ÇÖZÜLDÜ
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 ?
Ş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.
Re: TCP/IP Veri Gönderme
wireshark+wincap gibi programları kullanarak hem YET programının hemde sizin programın gönderdiği veri paketlerini inceleyip karşılaştırabilirsiniz.
-
- Üye
- Mesajlar: 118
- Kayıt: 17 Ağu 2010 09:08
Re: TCP/IP Veri Gönderme
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
Re: TCP/IP Veri Gönderme
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.
Bu arada; DC4, byte olarak 20 demektir.
There's no place like 127.0.0.1
-
- Üye
- Mesajlar: 118
- Kayıt: 17 Ağu 2010 09:08
Re: TCP/IP Veri Gönderme
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
Re: TCP/IP Veri Gönderme
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.
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
-
- Üye
- Mesajlar: 118
- Kayıt: 17 Ağu 2010 09:08
Re: TCP/IP Veri Gönderme
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
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
-
- Üye
- Mesajlar: 118
- Kayıt: 17 Ağu 2010 09:08
Re: TCP/IP Veri Gönderme
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...
Re: TCP/IP Veri Gönderme
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.
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
-
- Üye
- Mesajlar: 118
- Kayıt: 17 Ağu 2010 09:08
Re: TCP/IP Veri Gönderme
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
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
Re: TCP/IP Veri Gönderme
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.
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
-
- Üye
- Mesajlar: 118
- Kayıt: 17 Ağu 2010 09:08
Re: TCP/IP Veri Gönderme
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
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;
-
- Üye
- Mesajlar: 118
- Kayıt: 17 Ağu 2010 09:08
Re: TCP/IP Veri Gönderme
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;