0

请原谅我提出一个愚蠢的问题,但我真的找不到解决方案。这就是我试图这样做的方式:

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 字节。先感谢您。

4

1 回答 1

0

看来服务器并不总是发送 1024 字节。这意味着期望它们的客户端代码将挂起,直到它获得正确数量的数据。您应该确保服务器正在发送预期的字节数,或者在您的协议中实现一些机制,允许发送者在有效负载的开头指示它将发送的字节数。这样,客户端将知道要读取多少字节。

于 2014-01-05T10:27:08.237 回答