我有一个奇怪的TCP套接字发生,我根本不知道如何解决。
- 我发送一个简单的Http请求,相机应该流元数据。
- 相机发送一个Http报头回复,然后开始以分块模式发送数据(它永远不会结束)。
奇怪的是,它需要大约7分钟,直到程序收到任何通知,有可用的数据。从那时起,它看起来就正常工作了。
现在我正在通过Wireshark监控数据流,数据正在正常传输,没有任何延迟。
我尝试过Qt 5.1和Boost 1.55,它的行为是相同的,所以我假设Windows正在做某种缓冲。我还设置了m_Socket_pStream->setSocketOption(QAbstractSocket::LowDelayOption, 1)在Qt中,没有任何区别。
现在的问题是,我需要实时的数据(好+-0.5秒),而不是在7分钟后。
有人经历过这样的事情吗?
致以最亲切的问候沃尔德
经过一番搜索和挖掘,我找到了解释。
1. Process Monitor showed that there are a lot of
TCP Copy operations being executed.
2. After some net searching I came across a forum where TCP Copy was
discussed in case of antivirus Http verification.
现在很清楚了。由于这是一个Http流,它是反病毒验证的一部分。现在,一段时间后/'可能大小'防病毒软件放弃等待流的结束(因为没有很多10MB的病毒在那里),它转发数据包。
希望对大家有所帮助。
Br沃尔德