我写了一个解析器来解析我在TCP中读取的数据,因为即使发送多个数据包时它们可能会在一次读取中,我的问题是如果一次数据包可能在2个读取命令中读取,或者如果我读取了一些数据的分组意味着所有分组数据都可用,并且将在相同的呼叫中被读取?附加tcp数据包是否有任何情况下只读取部分数据包? C#
-1
A
回答
0
一堆代码会很好,但我认为你是在谈论你通过一个TCP套接字接收的数据......在这种情况下,答案是:不,你不会看到内容一个数据包正在被网络设备读取......一旦它通过检查数据包校验和的TCP堆栈就会得到它......在验证校验和之前你不会得到数据,因此最小的一块你可以得到的数据是一个完整的数据包的内容
0
TCP是一个流 - 只有下面的IP层将它分成单独的数据包。您可以拨打Send()
或类似的API,然后IP层以任何合适的方式将数据流分成数据包。所以,你不能依靠整个缓冲来到一个电话。
或者,用一个极端的例子来解释一下:假设您拨打Send(huge_1GB_buffer)
。你会如何期待阅读行为?
相关问题
- 1. 匹配数据包和ICMP数据包在TCP重复的情况下
- 2. 数据包插入情况下的TCP可靠性
- 3. Linux TCP:数据包分段?
- 4. Java NIO:从Channel中读取不包含任何数据的数据。我如何处理这种情况?下面
- 5. TCP数据包的MTU是否包含TCP和IPv4标头?
- 6. 如何理解数据包是TCP关闭数据包与sharPcap
- 7. TCP RST数据包延迟数据包
- 8. 如何确定数据包接收是在C#中使用tcp的第一个数据包的一部分
- 9. 如何验证Scapy中的数据包是否有TCP层
- 10. C - 只有在MTU超出时发送TCP数据包
- 11. 阅读TCP数据包缓冲区
- 12. 如何检测哪些TCP数据包是C#中HTTP连接的一部分?
- 13. 在linux下读取http数据包
- 14. 如何知道数据集/数据表是否包含不读取任何行的CLOB数据
- 15. 如何通过数据包从Linux TUN读取数据包/ TAP
- 16. 使用libpcap读取数据包数据
- 17. 捕获TCP数据包流
- 18. 解析TCP数据包的数据
- 19. 原始套接字似乎在某些情况下获得所有数据包,但不是其他数据包
- 20. 读取UDP数据包
- 21. 数据包捕获:带有FIN标志的数据包是否也有数据?
- 22. 如何从java读取TCP数据包的内容
- 23. 制作TCP/IP数据包
- 24. 如何在不影响已有数据的情况下将数据附加到现有数据库?
- 25. 区分TCP中的数据包IP
- 26. Python(scapy):如何嗅探只有outboun数据包的数据包
- 27. 是否有任何情况下您会在Unicode数据库上使用NLS_LENGTH_SEMANTICS = BYTE?
- 28. 如何转换为字符串并从TCP数据包读取数据
- 29. 更改TCP/IP数据包C++或java
- 30. 用C创建TCP数据包#
很难理解你在问什么。你能提供一些代码吗? – Xaqron 2013-04-07 11:53:46