sab*_*ber 3 .net c# streaming network-programming
我有以下代码:
_clientRequestStream = _tcpClient.GetStream();
var memoryStream = new MemoryStream();
_clientRequestStream.CopyTo(memoryStream);
Run Code Online (Sandbox Code Playgroud)
CopyTo需要很长时间才能复制Stream到另一个Stream.似乎应用程序没有任何理由停在那里,或者至少我找不到原因.
Jas*_*aat 12
网络流保持打开状态,直到它被流的一端关闭.CopyTo()从流中复制所有数据,等待流结束.如果服务器没有发送数据,则流不会结束或关闭,而CopyTo()会尽职地等待更多数据或流结束.流的另一端的服务器必须关闭流以使其结束并且CopyTo()返回.
谷歌"TcpClient教程"或"TcpCLient示例",以获得一些好的页面,显示您可能使用它们的其他方式,例如检查NetworkStream.DataAvailable以查看是否有数据等待或者流是否仍然打开而没有数据.要只读取一些数据而不等待流关闭,您将使用NetworkStream.Read()或将其包装在StreamReader中并使用ReadLine().这一切都取决于您连接的服务器以及您要完成的任务.
TCP是一种流协议.字节可以以任意速率流动.从理论上讲,你可以获得一个字节,然后几秒钟后得到10个字节,然后几分钟后得到两个字节.
TCP作为协议本身是无用的.
必须有一个更高阶的协议,其结构允许检测"消息"的开头和结尾.我们无法猜测你正在听什么高阶协议,你必须知道为了倾听.
| 归档时间: |
|
| 查看次数: |
4714 次 |
| 最近记录: |