gpt4 book ai didi

C# .Net 套接字缓冲区理解

转载 作者:可可西里 更新时间:2023-11-01 02:39:54 26 4
gpt4 key购买 nike

我试图了解缓冲区在套接字方案中的使用。以下是我的理解,如果有人能告诉我我的看法是否正确或对我可能误解的地方提供反馈,那就太好了。

使用 MSDN 上详细介绍的异步套接字 example (以下均引用该示例)

下面描述了一个我理解的状态对象:

// State object for reading client data asynchronously
public class StateObject
{
// Client socket.
public Socket workSocket = null;
// Size of receive buffer.
public const int BufferSize = 1024;
// Receive buffer.
public byte[] buffer = new byte[BufferSize];
// Received data string.
public StringBuilder sb = new StringBuilder();
}

现在它说缓冲区是 1024 字节。当您接收数据时,您一次只要求 1024 个字节?在异步方法 ReceiveCallback 中,它只要求 1024,然后说这可能不是所有数据,所以现在检索下一个 1024。

所以基本上,发送到套接字的输入流以 1024 字节 block 的形式读取,您继续读取直到到达终点(根据您自己的定义)?

最佳答案

So basically, the input stream sent to the socket is read in 1024 byte chunks and you keep reading till you've hit an end point (by you're own definition)?

正确。由于 TCP 只是一个数据流,因此如果您的消息在流中,则实际上无法知道每个消息的长度(除非您始终具有固定长度)。因此,您需要使用某种缓冲区从流中读取,以便能够检测到消息的结尾。

关于C# .Net 套接字缓冲区理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14518551/

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