Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Per TCP mehrere Informationen mit einer Send-Anweisung übertragen
HelishCoffe
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

Per TCP mehrere Informationen mit einer Send-Anweisung übertragen

beantworten | zitieren | melden

Hallo,
ich habe eine Frage bezüglich TCP bzw Sockets in C#.
Wenn ich in C# Daten senden möchte, tuhe ich das ja üblicherweise in ein Byte-Array. Nun möchte ich aber mehrere Informationen Senden. z.B. möchte ich Name, Adresse, Alter und Geschlecht einer Person versenden. Jetzt bin ich nur überfragt wie ich das lösen soll, ich bin ich ziemlich neu, was Networking in C# angeht.
Hier mein Code:


        public void StartStramWriting()
        {
            new Thread(() =>
            {
                while (!CancelStream)
                {
                    try
                    {

                        byte[] PaketName = ASCIIEncoding.ASCII.GetBytes("Peter");

                        RootCl.Client.Send(PaketName);

                        // Friert den Thread für 0,1 Sekunde ein
                        Thread.Sleep(100);
                    }
                    // Abfrage ob eine Fehlerfreie Verbindung zum Server noch gewährleistet wird
                    catch(Exception)
                    {
                        Console.WriteLine("Fehler beim Schreiben des Streams, Die Verbindung zum Server wurde unterbrochen");
                        break;
                    }
                   
                   
                }

                CancelStream = true;

            }).Start();
        }


Ich habe bisjetzt immer nur den Namen "Peter" senden können. Wie kann ich also das Alter, die Adresse und das Geschlecht von Peter mitsenden?`ohne das der Empfänger ein gemisch aus Daten empfängt.

mfg
Tim
private Nachricht | Beiträge des Benutzers
chilic
myCSharp.de - Experte



Dabei seit:
Beiträge: 2138

beantworten | zitieren | melden

Der Empfänger muss natürlich wissen was er bekommt. Wenn du ein Gemisch aus Daten sendest, empfängt er auch ein Gemisch aus Daten.
Du kannst jede denkbare Idee nutzen um die Daten zu strukturieren. XML, csv, was auch immer momentan und auch in Zukunft für dein Programm sinnvoll ist.
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 862
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

Ausserdem solltest Du dich vllt nach den Stichwörtern WCF, .net Remoting, Web Api etc.. erkundigen. Man sollte nicht alles neu erfinden.
private Nachricht | Beiträge des Benutzers
HelishCoffe
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

beantworten | zitieren | melden

Erstmal danke für die Antworten.

@unconnected: Da sich mein C# Client mit einem Java Server verbindet, werden mir wohl WCF und .net Remoting wenig bringen.
private Nachricht | Beiträge des Benutzers
weismat
myCSharp.de - Member



Dabei seit:
Beiträge: 878
Herkunft: Frankfurt am Main

beantworten | zitieren | melden

Client und Server sprechen mit einander ein Protokoll.
Protokolle haben meist einen Header und ein Payload/Nutzlast.
Der Header enthält meist Informationen über die Länge der Nachricht und den Aufbau und die Payload dann die eigentliche Nachricht.
private Nachricht | Beiträge des Benutzers
Der_Blob
myCSharp.de - Member



Dabei seit:
Beiträge: 30

beantworten | zitieren | melden

Um nochmals auf die Idee von chilic zu Xml einzugehen.
Solltest du dich entscheiden mit XML zu arbeiten, möchte ich dich auf die XmlSerializer Klasse (XmlSerializer Class) aufmerksam machen mit welcher du ein Objekt(hier müsstest du eine Klasse Person erstellen) per Methode in einen Stream schreiben kannst. Wenn dein RootCl vom Typ TcpClient ist, kommst du an den Stream mit der Methode GetStream().
In deiner Java-Anwendung müsste du dann die XML, welche du ausliest, von Hand zurück überstetzen.

Ich hoffe ich konnte helfen
Der_Blob
private Nachricht | Beiträge des Benutzers
ujr
myCSharp.de - Experte



Dabei seit:
Beiträge: 1770

beantworten | zitieren | melden

Hallo HelishCoffe,
Zitat von HelishCoffe
Da sich mein C# Client mit einem Java Server verbindet, werden mir wohl WCF und .net Remoting wenig bringen.

Dann hättest Du das anstelle von "Frage bezüglich TCP bzw Sockets in C#" schreiben müssen und nicht nachträglich einen Helfer von oben herab belehren wollen.
private Nachricht | Beiträge des Benutzers