NetworkStream - 等待所有字节物理传送到网络适配器

时间:2015-02-21 20:42:42

标签: c# networkstream

我使用以下代码从流中复制到NetworkStream中。 但是,调用目标的Write方法并不意味着字节会立即通过该行传输。

有没有办法等到字节通过网络适配器发送到线路?

 private static long CopyStream(Stream input, NetworkStream output, int bufferSize)
    {
      byte[] buffer = new byte[bufferSize];
      int count = 0;
      long total = 0;

      DateTime start = DateTime.Now;
      while ((count = input.Read(buffer, 0, buffer.Length)) > 0)
      {
        output.Write(buffer, 0, count);
      }


      TimeSpan tselapsed = DateTime.Now - start;

      double bps = Math.Round((input.Length / tselapsed.TotalSeconds) / 1000, 2);

      Trace.WriteLine(bps + " Kbytes/sec");
      return total;
    }

1 个答案:

答案 0 :(得分:0)

简短的回答是否定的,你不能。 原因是您使用套接字在应用程序级别进行操作。但是这些套接字的下层是其他层,更不用说套接字层本身,它们实现了自己的缓冲区。当他们决定在电线上实际放置某些东西时,根据这些较低层的实施情况而定。