gpt4 book ai didi

c# - 这段代码能确保我从一个套接字中读取我想要的所有内容吗?

转载 作者:太空狗 更新时间:2023-10-30 00:12:10 24 4
gpt4 key购买 nike

执行 Socket.Receive(byte[]) 将从缓冲区中获取字节,但如果预期数据相当大,所有字节可能还没有在缓冲区中,这只会给我一个部分填充的字节数组。此代码能否确保我读入我想要的所有内容?

sock.Receive(message_byte, message_byte.Length, SocketFlags.None);

其中 message_byte 已经被声明为我期望的数据的确切大小。我是否以正确的方式解决这个问题?此句柄不会大于 ~10 兆,因此在声明字节数组时我不太可能遇到 OutOfMemoryException。

最佳答案

不,Receive 返回接收到的字节数。你应该妥善处理这个问题。

var needBytes = message_byte.Length;
var receivedBytes;
var totalReceivedBytes = 0;
do
{
receivedBytes = sock.Receive(message_byte, totalReceivedBytes, needBytes, SocketFlags.None);
needBytes -= receivedBytes;
totalReceivedBytes += receivedBytes;
} while (needBytes > 0 && receivedBytes > 0)

关于c# - 这段代码能确保我从一个套接字中读取我想要的所有内容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7126985/

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