Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C内存流TCP/IP过度使用带宽_C#_.net_Networking - Fatal编程技术网

C# C内存流TCP/IP过度使用带宽

C# C内存流TCP/IP过度使用带宽,c#,.net,networking,C#,.net,Networking,我创建了一个简单的Web服务器,它以每秒25帧的速度向客户端发送约0.5mb的网络摄像头小图像。然而,在执行时,我注意到在LAN上有相当大的延迟(估计为2秒),在通过任务管理器检查带宽使用情况时,我使用了100 mbps带宽的100%。我对C/.NET相当陌生,不太清楚为什么会发生这种情况。这是主服务器循环: image = grabBitmapBlocking(); // Console.WriteLine("FPS: " + Aruco.FpsCounter.CalculateFrameR

我创建了一个简单的Web服务器,它以每秒25帧的速度向客户端发送约0.5mb的网络摄像头小图像。然而,在执行时,我注意到在LAN上有相当大的延迟(估计为2秒),在通过任务管理器检查带宽使用情况时,我使用了100 mbps带宽的100%。我对C/.NET相当陌生,不太清楚为什么会发生这种情况。这是主服务器循环:

 image = grabBitmapBlocking();
// Console.WriteLine("FPS: " + Aruco.FpsCounter.CalculateFrameRate());
//image.RotateFlip(RotateFlipType.RotateNoneFlipX);

// save it to jpeg using quality options
m.Position = 10;
image.Save(m, myImageCodecInfo, myEncoderParameters);

// Send the length as a fixed length string
m.Position = 0;
m.Write(Encoding.ASCII.GetBytes((m.Length - 10).ToString("d8") + "\r\n"), 0, 10);
Console.WriteLine("sent " + m.Length + " bytes or " + m.Length / 1e6 + " megabytes");
// send the jpeg image
serv.SendToAll(m);

// Empty the stream
m.SetLength(0);

// remove the image from memory
image.Dispose();
image = null;

有人能告诉我可能出现的问题吗?

从检查数学开始:

以每秒25帧的速度向客户端发送约0.5mb的网络摄像头小图像

即25x0.5兆字节=12.5兆字节。它需要大约125兆的带宽

我使用100 mbps带宽的100%

你需要更多,正如数学所显示的。视频流被编码而不是作为各种位图发送是有原因的

我对C/.NET相当陌生,不太清楚为什么会发生这种情况


您需要的是一个视频流,它是使用视频编解码器编码的,这意味着运动量小的图像也会变小。

请在以后格式化您的帖子时投入更多精力。你现在已经发表了很多文章,很容易理解如何使用编辑器,并在发表之前查看预览,而不是依赖其他人使你的文章可读;做什么?删除这一行是否会消除性能问题?忽略功能的丢失确实-基本上,我们需要一个而不仅仅是一个片段。你还没有告诉我们这条小溪有多大等等。。。请阅读感谢大家的反对票和粗鲁。我很自信代码本身不是错误的,而是我的逻辑思维。汤姆也尴尬地证实了这一点。简单地将每秒比特数与每秒字节数进行切换。如果主持人也能删除这个问题,我将不胜感激。不要担心@Aeefire的否决票——反正你只收到了一张。是的,有时候这里的语气有点刺耳,但别担心。下面的答案远远超出了粗鲁的界限,所以我对它进行了编辑,海报似乎已经被暂停了一个月,所以人们得到了他们的报应!。呃,啊。。。现在是。。尴尬。是的,当然。字节vs位嗯……谢谢……在你抨击别人之前,我会检查你自己的逻辑。12.5兆字节=100兆字节,不是125。@ChrisBint我猜这是打字错误。。。不必粗鲁@克利斯宾:这是真的,但是无知。通常,这里有各种类型的开销,从IP数据包头开始。通常情况下,有效载荷和网络带宽之间的系数为10是一个非常好的近似值。这有点太高了,但由于各种间接费用的影响,远低于2/8。