Laden...

Per TCP mehrere Informationen mit einer Send-Anweisung übertragen

Erstellt von HelishCoffe vor 10 Jahren Letzter Beitrag vor 10 Jahren 904 Views
H
HelishCoffe Themenstarter:in
2 Beiträge seit 2013
vor 10 Jahren
Per TCP mehrere Informationen mit einer Send-Anweisung übertragen

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

C
2.121 Beiträge seit 2010
vor 10 Jahren

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.

849 Beiträge seit 2006
vor 10 Jahren

Ausserdem solltest Du dich vllt nach den Stichwörtern WCF, .net Remoting, Web Api etc.. erkundigen. Man sollte nicht alles neu erfinden.

H
HelishCoffe Themenstarter:in
2 Beiträge seit 2013
vor 10 Jahren

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.

W
872 Beiträge seit 2005
vor 10 Jahren

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.

D
30 Beiträge seit 2013
vor 10 Jahren

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

U
1.688 Beiträge seit 2007
vor 10 Jahren

Hallo 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.