如何通过TCP / IP C#正确接收所有数据

时间:2014-01-05 09:28:25

标签: c# tcp-ip system.net.sockets

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

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字节。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

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