Ich versuche mit einer Anwendung über das Netzwerk zu interagieren, die ein einfaches Protokoll verwendet. Ich habe einen Header zu senden, die wie folgt aussieht:Eine 2-Byte-Ganzzahl in einen Stream schreiben?
2 Byte = Datenlänge (einschließlich Anfragetyp)
1 Byte = Request Typ
Ich nehme beiden Parameter als ganze Zahlen:
private static void WriteHeader(Stream buf, int length, int requestType) {
buf.Write(BitConverter.GetBytes(length), 0, 2);
buf.WriteByte((byte)requestType);
}
ich bin es so Berufung:
byte[] outBuf = new byte[256];
using (MemoryStream outStream = new MemoryStream(outBuf)) {
// Socket connection stuff here
WriteHeader(outStream, 1, 110);
sock.Send(outBuf);
// Receive stuff here, never returns
}
Ich erhalte keine Ausnahme, wenn ich diese Methode anrufe oder outBuf
über einen Socket sende, aber die Netzwerkanwendung antwortet nie. Ich kann es jedoch mit anderen Programmen abfragen, daher bin ich mir ziemlich sicher, dass dies daran liegt, dass meine Kopfzeile nicht korrekt geschrieben wird.
Mache ich etwas falsch beim Schreiben der Werte?
EDIT: Added Memory Code
Wirf die Länge auf '(kurz) Länge' –