【发布时间】:2015-06-29 07:57:39
【问题描述】:
我尝试了以下情况并使用秒表来测量套接字接收的实际时间。请注意,超时以毫秒为单位。
Dim NextClient As New TcpClient
NextClient.ReceiveTimeout = 1 //Case 1
NextClient.Client.ReceiveTimeout = 1 //Case 2
Dim ns As Net.Sockets.NetworkStream = client.GetStream()
ns.ReadTimeout = 1 //Case 3
Dim sw As New Stopwatch
sw.Start()
ns.Read(gbytes, 0, 5997)
sw.Stop()
顺便说一句,ns.CanTimeout 返回真。此外,我并不真正期望 1 毫秒的精度,它仅用于测试目的。我实际上是从 500 毫秒开始的,但首先想用这个进行测试。
在所有情况及其组合中,即使我每次使用秒表测量 100 多毫秒,我都会毫无例外地收到数据。但是,如果我故意将响应延迟几秒钟,我就会得到异常。但即使是我对服务器的 ping / 2 也远远超过 1 毫秒。
奇怪的是,如果我将超时设置为 1000 毫秒并且服务器响应大约需要 1020 毫秒,则会触发异常。
那么,有最小值还是别的什么?
【问题讨论】:
标签: c# vb.net tcp timeout tcpclient