Frage

Ich habe einen UDP -Server, den ich versucht habe, Strukturen mit Send () -Methode zu senden. Bisher kein Glück ...

Das benutze ich:

H, G sind Strukturen ...

Absenderseite:

IFormatter formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
formatter.Serialize(stream, H);
Byte[] buffer = stream.ToArray();
stream.Close();

und auf der Empfängerseite:

IFormatter formatter = new BinaryFormatter();
Stream s = new MemoryStream(buffer.Data);
ClientAnswerStruct G = (ClientAnswerStruct)formatter.Deserialize(s);
s.Close();
MessageBox.Show(G.name);

Aber ich bekomme diesen Fehler:

 Unable to find assembly 'UdpClientSample, Version=1.0.0.0, Culture=neutral,    PublicKeyToken=null'.

'UDPClientSample' ist zufällig der Titel des Client -Programms, das die Daten an den Server sendet ... also frage ich mich, ob es mehr als Serialisierung braucht, um eine Struktur über UDP -Verbindung zu senden.

Gibt es da draußen einen Durchbruch, der erklärt, was Iamamac sagt?

War es hilfreich?

Lösung

Ich habe nicht den gesamten Code gesehen, aber ich denke, der Server und der Client sind zwei verschiedene ausführbare Dateien und die ClientAnswerStruct Klasse ist definiert zweimal auf beiden Seiten. Wenn der Empfänger die Daten deserialisiert, versucht er, a zu rekonstruieren ClientAnswerStruct Objekt, kann aber seine Definition nicht finden (Beachten Sie, dass es auf der Seite des Absenders definiert ist. Obwohl auf der Seite des Empfängers eine Klasse mit dem Namen ist ClientAnswerStruct, aber sie sind nicht gleich).

Der richtige Weg, dies zu tun, ist das Definieren der ClientAnswerStruct Klasse in einer eigenständigen Klassenbibliothek und lassen Sie den Server- und Client -Code ihn enthalten ('Referenz hinzufügen' in C# Terminologie).

Andere Tipps

Ich würde empfehlen, Ihre Frage ein wenig zu klären. . . Ich gehe davon aus, dass Sie versuchen, die folgende Funktion in C oder C ++ zu verwenden?

ssize_t send (int Socket, const void *puffer, size_t länge, int flags);

Lassen Sie uns wissen, welches spezifische Problem Sie haben, z. B. Fehlermeldungen, Beispielcode, der nicht funktioniert, usw.

Wenn Sie über C ++ sprechen, ist eine Struktur eine Klasse, außer in einer Struktur sind alle Mitglieder standardmäßig öffentlich. Technisch (aber vor allem) senden Sie keine Klasse oder Struktur, sondern eine Instanz eines Objekts oder eines primitiven Datentyps.

-Bn

Wie Lamamac bereits gesagt hat, scheint dies kein Problem Ihres Code oder Ihrer Funktionen zu sein, die Sie verwenden. Es ist nur so, dass Sie einen Verweis auf Ihre Bewerbung angerufen haben UDPClientSample Wenn Sie jedoch Ihre Bewerbung starten, kann dies nicht die erforderliche Anwendung finden.

Die erste einfachste Methode, um dieses Problem zu lösen Lokal kopieren zu wahr.

Wenn die Anwendung jetzt zu laufen beginnt, sollten Sie über die nachdenken Lastreihenfolge oder Verwenden von AssemblyResolve oder mit ilmerge

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top