我正在尝试通过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();才能获得服务器接收的数据,但这会断开我的客户端,这是一个问题。有什么建议吗?
发布于 2016-05-07 11:36:16
很明显,通过关闭与TcpClient对象相关联的NetworkStream对象,会断开与客户端的连接。由于TCP是基于流的协议,因此您只能做以下两件事中的一件:1。]如果在读取超时之前没有可用的数据,则使用networkstream.readtimeout断开连接,或使用2。]设计一个协议,告诉接收方发送方愿意发送的数据长度,并且只读取该长度的字节。
发布于 2013-04-27 07:55:44
你有没有尝试过只使用bufferedoutput.Flush()?
https://stackoverflow.com/questions/16246762
复制相似问题