关闭没有TcpClient断开连接的BufferedStream?

时间:2013-04-26 23:45:04

标签: c# tcp tcpclient bufferedstream

我正在尝试通过TcpClient和BufferedStream发送图像。问题是我无法在不断开TcpClient的情况下发送数据。

发送数据:

while ((bytesread = bufferedinput.Read(buffer, 0, sizeBuffer)) > 0)
            {
                //Sending data
                bufferedoutput.Write(buffer, 0, bytesread);
            }

接收数据:

while ((bytesread = bufferedinput.Read(buffer, 0, buffsize)) > 0)
                {
                    bufferedoutput.Write(buffer, 0, bytesread);
                }

其中:

NetworkStream serverStream = client.GetStream();

BufferedStream bufferedoutput = new BufferedStream(serverStream);

问题是我必须在客户端转换bufferedoutput.Close();以获取服务器收到的数据,但这会断开我的客户端,这是一个问题。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

很明显,通过关闭与TcpClient对象关联的NetworkStream对象,断开客户端连接。由于TCP是基于流的协议,因此只能执行以下两种操作之一:1。使用networkstream.readtimeout断开连接,如果在读取超时之前没有数据可用,或者2.]设计协议以告知接收器长度对于数据,发送方愿意发送,并且只读取该字节长度。

答案 1 :(得分:0)

您是否只尝试了bufferedoutput.Flush()