我使用以下代码从流中复制到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;
}
答案 0 :(得分:0)
简短的回答是否定的,你不能。 原因是您使用套接字在应用程序级别进行操作。但是这些套接字的下层是其他层,更不用说套接字层本身,它们实现了自己的缓冲区。当他们决定在电线上实际放置某些东西时,根据这些较低层的实施情况而定。