Thema: Delphi LAN-Anbindung

Einzelnen Beitrag anzeigen

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