【发布时间】:2013-08-16 14:35:38
【问题描述】:
如何在不使用 BinaryWriter/Reader 的情况下将 TCP 流的大小嵌入或告知接收方?
必须有一种快速的方法让它知道它是否已经到达终点,当然,除了终止连接。
tcp.GetStream().Write(ms.GetBuffer(), 0, (int)ms.Length);
我是这样发送的,但接收是困难的部分。
编辑:
这对我不起作用:
while (tt1.GetStream().DataAvailable)
{
su = Image.FromStream(tt1.GetStream());
}
【问题讨论】:
-
为什么需要先得到长度才能阅读?
-
在调用
.DataAvailable或Image.FromStream之前,您是否尝试将tt1.GetStream()放入临时的NetworkStream或任何类型的流中?另外,我不认为Image.FromStream需要在一个 while 循环中 - 它应该处理到达流本身的末尾。 -
好的,会尝试,意思是,在while循环中将其复制到NetworkStream,并在while循环之后读取。
-
我的意思是只使用
Image.FromStream(tt1.GetStream());在不检查 DataAvailable 的情况下,这在任何循环之外都不起作用吗? -
哦,不,它没有。除了,如果我断开连接,那么它适用于 1 张图片。 (它不知道结束,所以即使没有数据它也会继续读取,所以如果我断开连接,它会强制读取它)。否则它将是完美的,因为我可以直接从流中读取。或者等待它不起作用,即使我在循环之外断开连接。