请原谅我一个愚蠢的问题,但我真的找不到解决方案。 这就是我试图这样做的方式:
public void FillBuf(object sender)
{
var handler = (Socket)sender;
while (true)
{
received = 0;
while (received < 1024)
{
int block = handler.Receive(bytes, received, bytes.Length - received, SocketFlags.None);
received += block;
}
que.Enqueue(bytes);
}
在程序开始时,我启动执行FillBuf
方法的线程。问题是我由于某种原因从未收到1024字节。
提前谢谢。
答案 0 :(得分:0)
服务器似乎并不总是发送1024个字节。这意味着期望它们的客户端代码将挂起,直到它获得正确的数据量。您应确保服务器正在发送预期的字节数或在协议中实现某种机制,以允许发送方在有效负载的开头指示它将要发送的字节数。这样客户端就会知道要读取多少字节。