AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Netzwerk-Kommunikation zwischen C# und Delphi-Programm
Thema durchsuchen
Ansicht
Themen-Optionen

Netzwerk-Kommunikation zwischen C# und Delphi-Programm

Ein Thema von hsg · begonnen am 22. Nov 2011 · letzter Beitrag vom 22. Nov 2011
 
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#1

Netzwerk-Kommunikation zwischen C# und Delphi-Programm

  Alt 22. Nov 2011, 09:43
Hallo zusammen,

ich kämpfe gerade an einem Projekt, bei dem ich eine Netzwerk-Kommunikation zwischen einem Server und Client schreibe. Die zu übertragenden Daten wollte ich dabei in einem Record hinterlegen und diesen Record über eine Socket-Verbindung durchs Netzwerk schicken.

Die Server-Seite soll ein nettes kleines Delphi-Programm übernehmen, die Client-Seite wird eine C#-Applikation mit dem Compact-Framework 3.5 (ist für ein Windows Mobile 6.5 Gerät).

Mittlerweile habe ich auch es soweit hinbekommen, dass Client und Server sich miteinander verbinden können und der Client den gefüllten Struct an den Server schickt. Der Server empfängt auch Daten, doch leider ist der Inhalt des Records irgendwie zerschossen. Was geht da schief????

So, hier der Stoff für die Glaskugel:

Client-Seite (c#):
Code:
                TLagerInfo rDaten;
                int nCount;
                byte[] cText;

                unsafe
                {
                    rDaten = new TLagerInfo();
                    rDaten.Befehl = Constants.BEF_LOGIN;

                    cText = new System.Text.ASCIIEncoding().GetBytes(User);
                    nCount = Math.Min(cText.Length, 25);
                    for (int i = 0; i < nCount; i++) rDaten.login[i] = cText[i];

                    cText = new System.Text.ASCIIEncoding().GetBytes(Password);
                    nCount = Math.Min(cText.Length, 25);
                    for (int i = 0; i < nCount; i++) rDaten.passwd[i] = cText[i];


                    cText = new System.Text.ASCIIEncoding().GetBytes(clPools.Keys[Pool - 1]);
                    nCount = Math.Min(cText.Length, 25);
                    for (int i = 0; i < nCount; i++) rDaten.pool[i] = cText[i];

                    byte[] buffer = new byte[sizeof(TLagerInfo)];

                    fixed (Byte* pBuffer = buffer)
                   
                        *((TLagerInfo*)pBuffer) = rDaten;
                   

                    oSocket.Send(buffer, buffer.Length, SocketFlags.None);
                }
mit
Code:
    struct TLagerInfo {
        public int Befehl;
        unsafe public fixed byte login[25];
        unsafe public fixed byte passwd[25];
        unsafe public fixed byte pool[40];
    };
Die Serverseite sieht so aus:
Delphi-Quellcode:
    nRead := Socket.ReceiveBuf(rEmpf,sizeof(TLagerInfo));
    if nRead = SizeOf(TLagerInfo) then begin
      if oLog <> nil then begin
        oLog.Add('Client: ' + Socket.RemoteHost);
        oLog.Add('Befehl : ' + IntToStr(rEmpf.Befehl));
        oLog.Add('Name : ' + rEmpf.login);
        oLog.Add('Pw: ' + rEmpf.passwd);
        oLog.Add('Pool: ' + rEmpf.pool);
        oLog.Add('===================');
      end; // if oLog <> nil
    end;
mit
Delphi-Quellcode:
  TLagerInfo = record
    Befehl : SmallInt;
    login : string[25];
    passwd : string[25];
    pool : string[40];
  end;
Daten, die ich im Client schicke:
Befehl: 1
Login: jo.hoyer
Passwd: ih
Pool: Produktiv-Kablow_D

Ankommen tut im Server folgendes:
Befehl: 1
Login:
Passwd:
Pool: roduktiv-Kablow_D

(nein, dass Passwort ist nicht mein normales Passwort )

Visual Studio sagt mir, dass im gesendeten Buffer die Ascii-Codes der Zeichen korrekt drinstehen.
Wie bekomme ich meinen Record korrekt ausgelesen?

Gruß Jörg
  Mit Zitat antworten Zitat
 


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 06:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz