gpt4 book ai didi

c# - 如何在 C# 中接收服务器推送数据?

转载 作者:行者123 更新时间:2023-11-30 14:44:03 24 4
gpt4 key购买 nike

我正在写一个程序。我的程序通过 HTTP 协议(protocol)从服务器接收数据。数据将由服务器推送到我的程序。我尝试使用 WebRequest,但只收到一个 session 的数据。我怎样才能保持连接活跃,从服务器continuosly接收数据,感谢您的帮助。

SDK文档如下:

在GUEST或ADMIN的授权下,可以获得该系列的直播图片(服务器推送)。要获取图像,请将请求发送到“/liveimg.cgi?serverpush=1”,如图所示在图中。 2-1-1.
当摄像头收到客户端的上述请求后,发送返回如图在图中。 2-2.
每个 JPEG 数据由“--myboundary”分隔,“image/jpeg”返回为“--myboundary”之后的“Content-Type”标题。对于“Content-Length” header ,它返回--myboundary 数据中的字节数(不包括“--myboundary”、每个 header 和\r\n 作为分隔符)。在“Content-Length” header 和“\r\n”(定界符)之后,实际将发送数据。
此数据传输将继续,直到客户端停止连接(断开连接),或者发生一些网络错误。

整数长度; 字符串 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);

最佳答案

如果服务器支持,您可以长时间保持 HTTP 连接打开。 (如前所述,这将显着限制您可以支持的并发用户数。)

服务器需要设置 Response.Buffer=false,并有一个扩展的 ScriptTimeout(我假设您在服务器端使用 ASP.NET)。执行此操作后,您的页面可以根据需要继续发送 Response.Write 数据,直到完成所有操作。

您的客户端需要在连接完成之前处理传入的响应,而不是为完成响应而阻塞。

关于c# - 如何在 C# 中接收服务器推送数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1002677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com