Ich möchte String Json über Netzwerkstream senden. Code auf Client-Seitesenden Byte [] Daten über Netzwerk Stream-Socket. C#
using (var ns = new NetworkStream(socket))
{
string json = JsonConvert.SerializeObject(listCfile, Formatting.Indented);
byte[] jsonbytes = Encoding.UTF8.GetBytes(json);
byte[] jsonLength = BitConverter.GetBytes(jsonbytes.Length);
ns.Write(jsonLength, 0, jsonLength.Length);
ns.Write(jsonbytes, 0, jsonbytes.Length);
}
jsonbytes war byte [988324]
Auf Server-Seite
using (var ns = new NetworkStream(socket))
{
byte[] byDataLength = new byte[4];
ns.Read(byDataLength, 0, 4);
int jsonLength = BitConverter.ToInt32(byDataLength, 0);
byte[] byData = new byte[jsonLength];
ns.Read(byData, 0, jsonLength);
File.WriteAllBytes("E:\\json.txt",byData);
}
byData wurde byte [988324]
Aber byData ich nicht denselben empfangen wird, wie jsonbytes habe ich gesendet.
Ich brauche ein paar Hilfen.
Aktualisierung! Manchmal funktioniert es. ByData empfangen ist das gleiche wie jsonbytes ich gesendet Manchmal funktioniert es nicht :(
"es einige Daten verlieren" ist keine hilfreiche Beschreibung des Problems. Bitte erläutern. –
Von der Client-Seite wird JsonLength vor den eigentlichen Daten gesendet, um einen Puffer auf der Serverseite zu bauen, um die JSON-Daten zu erhalten? – nura
@nura ich denke das gleiche wie du, aber ich bin Anfänger in C# und Codierung, so können Sie mir ein paar Beispiele geben, vielen Dank. – vmphuong