0

我正在尝试通过 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();在客户端进行转换以获取服务器接收到的数据,但这会断开我的客户端,这是一个问题。有什么建议么?

4

2 回答 2

1

很明显,通过关闭与 TcpClient 对象关联的 NetworkStream 对象,可以断开客户端的连接。由于 TCP 是基于流的协议,您只能做两件事之一,要么 1.] 如果在 readtimeout 之前没有数据可用,则使用 networkstream.readtimeout 断开连接,或者 2.] 设计一个协议来告诉接收器长度数据,发送者愿意发送,并且只读取那个长度的字节。

于 2016-05-07T03:36:16.077 回答
0

您是否尝试过bufferedoutput.Flush()

于 2013-04-26T23:55:43.687 回答