如何识别c#中数据传输的结束?

时间:2013-06-02 11:28:47

标签: c# networking

我正在编写memcached的替代方法,但我发现c#(。net)在一件事情上的行为与c不同。

当我使用netcat发送此命令时:

echo version | nc localhost 11211

到memcached的c版本我得到一个响应并且netcat关闭了连接

当我对我的c#版本执行相同操作时,连接保持打开状态,因为我正在使用此循环:

while (!Reader.EndOfStream && connection.Connected)
{
      ...
}

在那一刻,代码挂起来从Reader.EndOfStream获取值 - 这个属性似乎调用了一些锁定到其他东西并等待的函数

但很明显,即使netcat不会向服务器发送任何其他内容,c#仍然“认为”该流没有真正结束,所以netcat挂断了我需要将其终止才能关闭连接。这是不受欢迎的行为,我不知道它为什么会发生。有谁知道如何检查流的真实结束,就像memcached中的c库一样? (这意味着当客户端完成发送任何数据时,我知道它并且我可以关闭连接)

0 个答案:

没有答案