【问题标题】:Reading from a Network Stream in C#从 C# 中的网络流中读取
【发布时间】:2012-06-19 00:44:45
【问题描述】:

我只是在从 C# 中读取网络流时遇到了这个问题。由于我更像是一名 Java 开发人员,因此我遇到了这个问题。

在 java 中,我可以使用以下代码知道接收到的数据包的长度 int length = dataiInputStream.read(rcvPacket);

即使分配的字节数组 rcvPacket 的大小大于其中包含的元素数量。这将允许我只读取所需长度的元素,这样我就不会在字节数组中包含包含零的元素。

当我试图在 C# 上使用类似的东西时

long len = networkStream.length;

但文档说不支持此属性。有解决办法吗?

谢谢

【问题讨论】:

    标签: c#-4.0 tcp networkstream


    【解决方案1】:

    Java 代码显示数据包的长度。它显示了在 read 调用中读取的数据量,这些数据可能来自多个数据包。

    NetworkStream.Read 返回相同的信息,除了使用 0 来表示流的结束而不是 -1。

    【讨论】:

    • @hypertunes:通过反复读取它,并注意到 Read 何时返回 0。您在 Java 中也会这样做,只是注意到 -1 而不是 0。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多