TcpClient.Stream.Read和TcpClient.Client.Receive有什么区别?

时间:2016-05-06 13:58:08

标签: c# sockets tcpclient

我正在使用一些非常古老的网络代码,它从嵌入式设备接收一些基本和最少的信息(大约28个字节),以便在某些WPF控件中显示。

我一直在搞乱网络代码,因为嵌入式设备有时会在这里和那里错过一条消息。

在接收端,已使用的网络循环如下:

 private void ReadTCPData() {
        var btReadBuffer = new byte[256];
        var nRead = 0;
        while (!bStop) {
            if (stream.CanRead) {
                if (stream.DataAvailable) {
                    try {
                        nRead = stream.Read(btReadBuffer, 0, 256);
                    }
                    catch {
                        _isCommError = true;
                    }
                    ParseData(btReadBuffer, nRead);
                }
            }
            Thread.Sleep(10);
        }
    }

如果我替换nRead = stream.Read(btReadBuffer, 0, 256);(流对象只是tcpClient.GetStream()

nRead = tcpClient.Client.Receive(btReadBuffer, 0, 256, SocketFlags.None);

我基本上完全相同的行为。

话虽如此,我试图理解做stream.Read()client.Receive()之间的区别?

编辑:

嗯,我认为从技术上说这是重复的,但答案令人失望,缺乏现有问题的细节。

0 个答案:

没有答案