2 Stimmen

Wie man ein Objekt über einen Socket sendet C#

Ich habe eine Liste von Objekten und möchte sie über eine TCP-Socket-Verbindung versenden. Eine Möglichkeit ist, die Objektliste zu nehmen und alle Werte zu erhalten, die durch Kommas getrennt sind, und die Daten zu empfangen und am anderen Ende und Werte in einem Objekt. Kann ich eine Objektliste senden, wie es in WCF Web Service getan werden kann. Es so können Sie mir zeigen, wie? Vielen Dank!

Ich habe bereits einen WCF-Dienst für diese erstellt, aber geändert, da es ein paar Probleme, die nicht gelöst werden können. Also ich bin diese Client-Server-Anwendung erstellen.

Außerdem werden die gesendeten Daten alle paar Sekunden aktualisiert, und sie werden von vielen Nutzern benötigt. Nach einigen Recherchen fand ich heraus, dass dies eine bessere Option wäre.

Ich habe diese Klasse, mit der ich meine Nachrichten verschickt habe

public void SendMessage(string text)
{
    Byte[] bytesSent = Encoding.UTF8.GetBytes(text);
    SocketAsyncEventArgs writeEventArgs = new SocketAsyncEventArgs();
    writeEventArgs.SetBuffer(bytesSent, 0, bytesSent.Length);
    socket.SendAsync(writeEventArgs);
}

Aber ich würde das Objekt lieber erst serialisieren und dann senden. Ich habe also einen Stream und brauche ihn als Byte-Array.

Das muss ich tun, um Daten zu empfangen:

void ReceiveData()
{
    try
    {
        int recv;
        string stringData;
        while (true)
        {
            recv = socket.Receive(data);
            stringData = Encoding.ASCII.GetString(data, 0, recv);
            if (stringData == "bye")
                break;
            ClientDataRecievedEventArgs sd = new ClientDataRecievedEventArgs(stringData);
            DataRecieved(this, sd);
        }
        stringData = "bye";
        byte[] message = Encoding.ASCII.GetBytes(stringData);
        socket.Send(message);
        socket.Close();
        this.Dispose();
        return;
    }
    catch (Exception)
    {
        socket.Close();
        this.Dispose();
    }

}

Das ist der Wunsch, den ich habe:

SoapFormatter formatter = new SoapFormatter();

foreach (Communication.Client Client in server.ClientList)
{
    foreach (ObjectLibrary.Model.PIP p in Repository.GlobalRepository.PIPInformation)
    {

        formatter.Serialize(stream, p);
        Client.SendMessage(stream);
    }
}

Wie initialisiere ich den Stream? Ich muss die Daten als Stream erhalten, um sie in Object zu deserialisieren.

Und so habe ich Liste von Objekten Kann ich eine ganze Liste serialisieren?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X