我有一个从安全摄像头下载图像流的应用程序(每个摄像头一个线程)。我向摄像机发出get请求,摄像机通过发送无穷无尽的jpg图像进行响应。
如果摄像机向程序发送数据的速度比程序处理数据的速度快,那么应用程序的行为是什么?现在我注意到计算机的已用内存高达95%然后停留在那里,但这个用过的内存没有附加到任何特定进程。这是因为套接字缓冲区不断扩展到某一点,然后只是在无法进一步扩展时才开始丢弃数据包?
我正在使用.Net套接字,如果重要的话。
答案 0 :(得分:3)
如果通过“stream”表示TCP,则内核套接字接收缓冲区将填满,OS网络堆栈将应用TCP flow control来减慢发送方的速度。
另一方面,如果您正在使用UDP,那么在某些时候您的接收器将开始丢弃数据包,除非您在应用程序级协议中有一些排序,否则您将无法了解它。