単純なプロトコルを使用するネットワーク経由でアプリケーションと対話しようとしています。次のようなヘッダーを送信する必要があります。
2 バイト= データ長 (リクエスト タイプを含む)
1 バイト= リクエスト タイプ
私は両方のパラメータを整数として取っています:
private static void WriteHeader(Stream buf, int length, int requestType) {
buf.Write(BitConverter.GetBytes(length), 0, 2);
buf.WriteByte((byte)requestType);
}
私はそれを次のように呼んでいます:
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
}
このメソッドを呼び出したり、ソケット経由で送信したりするときに例外は発生しませんoutBuf
が、ネットワーク アプリケーションは応答しません。ただし、他のプログラムでクエリを実行できるため、ヘッダーが正しく記述されていないことが原因であると確信しています。
値を書き込むときに何か間違っていますか?
編集: MemoryStreamコードを追加