チャンク転送エンコーディング ストリーミング (つまり、HTTP 経由のビデオ ストリーム) を取得するために、http サーバーに要求を送信する http クライアントを (TCPClient から継承して) 実装する私のプログラム。
クライアントとサーバー間の接続を監視するために、同じソケットに null バイト (0x00) を書き込もうとするバックグラウンド スレッドを開始し、それに応じて接続の問題を検出します (ここで推奨されているように):
while (Client != null && Client.Send(ping) > 0)
Thread.Sleep(2000);
2 つのスレッドからの書き込みの影響は、Wire-shark では、次のように ping と HTTP 要求が同じパケットに含まれていることがあります。
00 10 18 8d 23 ab 00 11 5d b9 e8 00 08 00 45 00 ....#...].....E.
00 b1 38 21 40 00 3e 06 77 de 0a 3f 03 3d 0a 3f ..8!@.>.w..?.=.?
74 8d 89 7f 00 50 6b c3 45 a8 9f 76 4a 88 80 18 t....Pk.E..vJ...
13 5d a9 ad 00 00 01 01 08 0a 9c ea b6 a5 00 06 .]..............
9f 8b 47 45 54 20 2f 73 74 72 65 61 6d 2f 31 2f ..GET /stream/1/
45 76 65 6e 74 41 20 48 54 54 50 2f 31 2e 31 0d EventA HTTP/1.1.
もちろん、サーバーはこのパケットを無視し、http 要求を認識できません。
ソケットに書き込み、Send メソッドを使用して 1 つのパケットで送信されるようにする方法はありますか?
[編集]
DavidとTASの回答からわかるように、それは不可能です。そして、これは TCP が意図した動作でさえありません。