プログラムを書いています。私のプログラムは、HTTP プロトコルを介してサーバーからデータを受け取ります。データはサーバーによって私のプログラムにプッシュされます。WebRequest を使用しようとしましたが、1 つのセッションのデータしか受信しませんでした。サーバーから継続的にデータを受信するために、接続を維持するにはどうすればよいですか。
以下は SDK ドキュメントです。
GUESTまたはADMINの権限で、一連のライブ画像を取得できます(サーバープッシュ)。画像を取得するには、図に示すように「/liveimg.cgi?serverpush=1」にリクエストを送信します。2-1-1.
カメラはクライアントから上記のリクエストを受け取ると、図のようにリターンを返します。2-2.
各 JPEG データは「--myboundary」で区切られ、「--myboundary」の後に「Content-Type」ヘッダーとして「image/jpeg」が返されます。「Content-Length」ヘッダーの場合、--myboundary データのバイト数を返します (「--myboundary」、各ヘッダー、区切り文字として \r\n を除く)。「Content-Length」ヘッダーと「\r\n」(デリミタ)の後に、実際のデータが送信されます。
このデータ送信は、クライアントが接続を停止する (切断する) か、何らかのネットワーク エラーが発生するまで続きます。
int レン; 文字列 uri = @" http://192.168.0.2/liveimg.cgi?serverpush=1 ";
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uri);
req.Credentials = new NetworkCredential("admin", "admin");
req.KeepAlive = true;
string line = "";
HttpWebResponse reply = (HttpWebResponse)req.GetResponse();
Stream stream = reply.GetResponseStream();
System.Diagnostics.Debug.WriteLine(reply.ContentType);
StreamReader reader = new StreamReader(stream);
do
{
line = reader.ReadLine();
System.Diagnostics.Debug.WriteLine(line);
System.Threading.Thread.Sleep(300);
} while (line.Length>0);