AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

LAN-Anbindung

Ein Thema von Jens Hartmann · begonnen am 31. Dez 2009 · letzter Beitrag vom 7. Jan 2010
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#11

Re: LAN-Anbindung

  Alt 31. Dez 2009, 15:22
Zitat von Jens Hartmann:
..Wincap isnot loaded
Hallo Jens Hartmann.

Du musst Wincap auch installieren, sollte bei der Programminstallation mitinstalliert werden.
Meines wissens, erscheint da ein separater Dialog wenn der Wincap Treiber zu installieren ist.
Schau nochmals auf Sourceforge ob Du auch die Vollinstall gesaugt hast.
Du kannst natürlich auch einen anderen Networksniffer verwenden, Packetyzer ist aber mein Favorit.

Zitat von Jens Hartmann:
..
Außerdem, was meinst Du mit
Lade dann den "Follow TCP-IP Flow" hoch, dann können wir Dir womöglich gleich weiterhelfen.
Nachdem Du den Netzwerkverkehr aufgezeichnet hast, unter

Reiter Connections, die betreffende Verbindung auswählen, und mit Show Packets und oder mit
Analyze TCP Flow, die Ergebnisse uns mitteilen.

Anbei gleich mal ein Server, an dem Du die zu empfangenden Pakete schon mal im Debuger ansehen kannst.
Du musst nur den Listening Port anpassen, und wenn die Kommunikation von Deiner Hardware TCP ist, dann siehst Du schon mal
was bei einem Verbindungsaufbau passiert. Sourcen musst Du natürlich an die Gegebenheiten eventuell leicht anpassen.

lg. Astat
Angehängte Dateien
Dateityp: rar server_174.rar (166,9 KB, 12x aufgerufen)
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#12

Re: LAN-Anbindung

  Alt 31. Dez 2009, 15:50
So,

hat bis jetzt wunderbar geklappt. Hier mal das Ergebniss.

Ich habe die Datei Decode.Cap in die Decode.Cap umbenannt.

Gruß Jens
Angehängte Dateien
Dateityp: txt decode_138.txt (5,8 KB, 13x aufgerufen)
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#13

Re: LAN-Anbindung

  Alt 31. Dez 2009, 16:44
Ja, sollte kein Problem sein.

Der Header ist so aufgebaut:

4Byte Längenangabe + 13 Byte Daten:

Delphi-Quellcode:

(** Request - Response (6 x Requests + Response)

00 00 00 0D C1 92 BD 73 2A BE 2E 47 24 F3 03 01
00 00 00 0D 2E 47 24 F3 2A BD C1 92 BD 74 03 01

00 00 00 0D C1 92 BD 74 2A BC 2E 47 24 F4 03 01
00 00 00 0D 2E 47 24 F4 2A BB C1 92 BD 75 03 01

00 00 00 0D C1 92 BD 75 2A BA 2E 47 24 F5 03 01
00 00 00 0D 2E 47 24 F5 2A B9 C1 92 BD 76 03 01


00 00 00 0D C1 92 BD 76 2A B8 2E 47 24 F6 03 01
00 00 00 0D 2E 47 24 F6 2A B7 C1 92 BD 77 03 01

00 00 00 0D C1 92 BD 77 2A B6 2E 47 24 F7 03 01
00 00 00 0D 2E 47 24 F7 2A B5 C1 92 BD 78 03 01

00 00 00 0D C1 92 BD 78 2A B4 2E 47 24 F8 03 01
00 00 00 0D 2E 47 24 F8 2A B3 C1 92 BD 79 03 01


Alle Requests sortiert

00 00 00 0D  C1 92 BD 73 2A BE 2E 47 24 F3 03 01
00 00 00 0D  C1 92 BD 74 2A BC 2E 47 24 F4 03 01
00 00 00 0D  C1 92 BD 75 2A BA 2E 47 24 F5 03 01
00 00 00 0D  C1 92 BD 76 2A B8 2E 47 24 F6 03 01
00 00 00 0D  C1 92 BD 77 2A B6 2E 47 24 F7 03 01
00 00 00 0D  C1 92 BD 78 2A B4 2E 47 24 F8 03 01

Alle Responses sortiert

00 00 00 0D  2E 47 24 F3 2A BD C1 92 BD 74 03 01
00 00 00 0D  2E 47 24 F4 2A BB C1 92 BD 75 03 01
00 00 00 0D  2E 47 24 F5 2A B9 C1 92 BD 76 03 01
00 00 00 0D  2E 47 24 F6 2A B7 C1 92 BD 77 03 01
00 00 00 0D  2E 47 24 F7 2A B5 C1 92 BD 78 03 01
00 00 00 0D  2E 47 24 F8 2A B3 C1 92 BD 79 03 01
**)


//--Headeraufbau
type
  TDataRec = packed record
    cbData : integer;
    Data1 : DWORD;
    Data2 : DWORD;
    Data3 : DWORD;
  end;

//-- Beispiel für Datenaufbereitung (Serverapplikation verwenden)
var
  DataRec: TDataRec;
  Buffer: array of Byte;
  ....
  //-- Im Socket Empfangsbuffer werden die 17 Bytes abgelegt.
  cbRcv := Recv(ClientSocket, Buffer[cb], 32768, 0);
  //-- Daten in die record struct schreiben
  move(Buffer, DataRec, SizeOf(TDataRec));
  
  //-- NetworkByteOrder
  DataRec.cbData := ntohl(DataRec.cbData);
  DataRec.Data1 := ntohl(DataRec.Data1);
  DataRec.Data2 := ntohl(DataRec.Data2);
  DataRec.Data3 := ntohl(DataRec.Data3);
Also starte den Testserver (Port kann als Start-Parameter übergeben werden), und
Debug alles durch ob der Header so passt, und du die erwarteten Daten bekommst.

Eventuell musst du noch ein Paar Bytes offsetten, aber Du kennst ja am ehesten die Daten, die du erwartest.
Einfach mal durchprobieren wenns nicht gleich geht, gibt ja nicht viele Möglichkeiten, bei so konstanter flacher
Headerstruktur.

Guten Rutsch, ich geh jetzt FEIERN!!

lg. Astat
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#14

Re: LAN-Anbindung

  Alt 31. Dez 2009, 17:00
Danke erstmal für die Hilfe,

ich denke ich gehe jetzt auch erstmal feiern um einen klaren Kopf zu bekommen.

Irgendwie versteh ich das noch nicht so ganz. Aber vieleicht ist morgen ja besser.

Also, erst nochmal danke und auch einen guten Rutsch.

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#15

Re: LAN-Anbindung

  Alt 1. Jan 2010, 19:20
Also,

ich habe mich jetzt den ganzen Nachmittag damit versucht zu beschäftigen. Leider ohne Erfolg. Ich weiß echt nicht wie ich das machen soll.

Ich finde noch nicht mal einen Anfang.

Vieleicht ist das doch noch eine Nummer zu Groß für mich.

Trotzallem, würde ich mich freuen, wenn Du mir das eventuell nochmal erklären könntest.

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#16

Re: LAN-Anbindung

  Alt 1. Jan 2010, 22:42
Zitat von Jens Hartmann:
..erklären könntest.
Hallo Jens Hartmann, ich fasse mal alles zusammen, um sicherzustellen das wir vom selben reden.

1. Du hast eine Hardware, die mit einer Server-Software eine TCP/IP Socket Verbindung, zwecks Messdatenübermittlung unterhält.
2. Du möchtest herausfinden, wie das Protokoll zwischen Hardware und Server-Software aussieht, um im Endeffekt einen eigenen Software Server nachzubauen.

Was ist bisher bekannt?

1. Das Protokoll und der Datentransport über Socket

Das Protokoll besteht aus: 4 Byte Längenangabe + 13 Byte Daten
Das ist einfach so zu verstehen, dass 17 Byte Daten von deiner Hardware, in den Empfangsbuffer des Socket geschrieben werden.
cbRcv := Recv(ClientSocket, Buffer[cb], 32768, 0);
Weitere Vorgehensweise.

1. Du brauchst erstmals einen Server
2. Wie kann man nun auf die Längeninformationen die in den ersten 4 Byte des Header enthalten sind zugreifen.
3. Wie sind die restlichen 13 Byte Daten im Header aufgebaut, und wie kann man darauf zugreifen?


Also gehen wir dies mal der Reihe nach durch.
Punkt 1. Du brauchst erstmals einen Server. Wenn du gut in Socket API Programmierung eingearbeitet bist, kein Problem für Dich.
Wenn nicht, verwende den Server den ich Dir upgeloaded habe, dort sind nur recv und send für Dich interessant (Debug Breakpont).
Grundzüge der Socket API Programmierung sollten vorhanden sein, send, recv, select und Network Byte Order.
Socket API desshalb, weil für die Datenanalyse (13 Byte und Handshake = send) die API geeigneter ist, als eine Komponente.
Wenn Du genau die Internas einer Server-Komponente kennst, kannst Du natürlich auch diese verwenden.

Punkt 2. Wie kann man nun auf die Längeninformationen die in den ersten 4 Byte des Header enthalten sind zugreifen.
Da die Längeninformation in den ersten 4 Byte des Empfangsbuffers "Buffer" enthalten sind, einfach die ersten 4 Byte in eine
4 Byte Variable (integer) kopieren.
move(Buffer, IntegerVariable, SizeOf(Integer)); danach mit ntohl (TCP/IP network order to host byte order) in die Längeninfo umwandeln.

Auf Punkt 3. Wie sind die restlichen 13 Byte Daten im Header aufgebaut, und wie kann man darauf zugreifen?
möchte ich erst dann genauer eingehen, wenn du Punkt 1 + 2 (Server + Längeninformationen) hast.

lg. Astat
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#17

Re: LAN-Anbindung

  Alt 2. Jan 2010, 16:27
Hallo Astat,

erstmal ganz großes Danke für die Erklärung. Ich glaube sogar, das ich das soweit verstanden habe. Ich habe mich jetzt mal mit den API Befehlen und mit deinem Server Programm versucht zu beschäftigen. Alles soweit verständlich. Allerdings habe ich noch zwei fragen.

1. Wenn ich dein Server Programm starte und die Breakpoints an den entsprechenden Stellen setzte, passiert erstmal gar nichts. Dann habe ich mir mal die Sachen im Form.Create angesehen.

Delphi-Quellcode:
  InitializeCriticalSection(_SocketLock);
  _wnd := handle;

  _bOnlyAccept := Pos('ONLYACCEPT', cmdline) <> 0;
  _Port := 8016;

  if ParamCount > 0 then begin
    {$R+}{$Q+}
    try
      _Port := 8016;//StrToInt(ParamStr(1)); Habe ich wegen Fehlermeldung raus Kommentiert. Und den Port hier auch auf 8016
                    //gesetzt.
                    //Wenn ich es richtig verstanden habe, muss hier der PORT für die Verbindung zur Hardware rein,der normal
                    // über einen Parameter der EXE gesetzt werden kann Programm.exe 8016 oder so
                    //Im Anhang habe ich mal einen Screenshot der Eigenschaften der Hardware
    except
      _Port := 8016;
    end;
    {$R-}{$Q-}
  end;
Jetzt meine Frage, muss ich jetzt irgendwie Daten senden, um welche empfange zu können. Oder muss eine Verbindung des Original Programms bestehen und ich lausch sozusagenmit.

Ist es relevant, wie ich im Netzwerk hänge. Mein Heimnetzwerk, ist über einen W-LAN Router aufgebaut. Und zwar in folgender Art & Weise...

Laptop mit Windows Vista über W-LAN -> Fritz-WLAN-Router -> Einbruchmeldeanlage über LAN-Anschluss direkt am Router

Danke nochmal, macht echt trotz schwierigkeiten voll Spass das hier zu tüfteln.

[EDIT] Anhang eingefügt. Sorry.

Gruß Jens
Miniaturansicht angehängter Grafiken
einstellungen_194.gif  
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#18

Re: LAN-Anbindung

  Alt 2. Jan 2010, 16:56
Zitat von Jens Hartmann:
Delphi-Quellcode:
                    
  // Wenn ich es richtig verstanden habe, muss hier der PORT für die Verbindung zur Hardware rein,der normal
  // über einen Parameter der EXE gesetzt werden kann Programm.exe 8016 oder so
  // Im Anhang habe ich mal einen Screenshot der Eigenschaften der Hardware
Hm, ich dachte die Hardware verbindet sich zu Dir und nicht umgekehrt?

Zitat von Jens Hartmann:
... Es gibt zu dieser Hardware, auch ein Programm, womit man diese Daten empfangen kann...
Ok, das finden wir auch noch raus "g".

Zitat von Jens Hartmann:
Jetzt meine Frage, muss ich jetzt irgendwie Daten senden, um welche empfange zu können. Oder muss eine Verbindung des Original Programms bestehen und ich lausch sozusagenmit.
Nein, der Server horcht nun auf Port 8016. Deine Hardware musst du jetzt so einstellen, dass sich diese zum Port 8016
verbindet.

Teste das mal durch, und finde bitte heraus, wer nun wirklich der Client und der Server ist?

lg. Astat
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#19

Re: LAN-Anbindung

  Alt 2. Jan 2010, 17:16
Also

die Hardware ist eine Einbruchmeldeanlage, auf die ich mich einloggen muss. Und zwar gibt es dafür zwei Varianten.

Die 1. Ist die Konfigurationssoftware der Zentrale. In dieser sage ich Verbindung herstellen, wie im Screenshot von meinem letzten Beitrag.

Die 2. Ist ein Managmentsystem, über welches ich mir an einem PC die Zuständen der Zentrale ansehen kann. Auch hier, wird beim Start der Software eine Verbindung zur Zentrale aufgebaut. Steht diese Verbindung, wird von der Zentrale kontinuierlich gesendet, und von der Software empfangen. Screenshot hier Einstellung Port 8015 (Bedarfsgesteuert)

Bedarfsgesteuert bedeutet in diesem Fall, das wenn eine Ereigniss auftritt, diese über TCP/IP versendet wird.

Also, müsste ja meine Software der Server und meine Hardware der Client sein.

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#20

Re: LAN-Anbindung

  Alt 2. Jan 2010, 17:37
Zitat von Jens Hartmann:
Also, müsste ja meine Software der Server und meine Hardware der Client sein.
Naja, wenn ich das so lese, vermute ich mal Du bist der Client.

Anbei ein Client, zum testen.

Versuch mal damit eine Verbindung und ein Logon zu bekommen.

lg. Astat
Angehängte Dateien
Dateityp: rar client_549.rar (168,0 KB, 6x aufgerufen)
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz