Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何确定网络流是否超时?_C#_Sockets_Tcpclient - Fatal编程技术网

C# 如何确定网络流是否超时?

C# 如何确定网络流是否超时?,c#,sockets,tcpclient,C#,Sockets,Tcpclient,我有一个TCP客户端,我设置网络流超时如下 stream.ReadTimeout = 60000; 它起作用了。但是我想知道如何测试流是否超时。该类不提供此方法 对这个问题再详细一点。 我正在将数据发送到TCPListener,大约每30分钟发送33KB。通常,传输持续约10秒,客户端发出手动“断开”命令,使侦听器再次启动。客户端是使用3G模块的嵌入式系统,有时网络连接会导致链路中断。现在,我只是将读取超时设置为60秒。如果在此期间没有获取数据,我们只需重新启动侦听器并等待下一个连接。

我有一个TCP客户端,我设置网络流超时如下

stream.ReadTimeout = 60000;   
它起作用了。但是我想知道如何测试流是否超时。该类不提供此方法

对这个问题再详细一点。 我正在将数据发送到TCPListener,大约每30分钟发送33KB。通常,传输持续约10秒,客户端发出手动“断开”命令,使侦听器再次启动。客户端是使用3G模块的嵌入式系统,有时网络连接会导致链路中断。现在,我只是将读取超时设置为60秒。如果在此期间没有获取数据,我们只需重新启动侦听器并等待下一个连接。 我正在记录系统的性能,并想知道一周内通常发生多少次超时。监听器只需检查读取操作是否超时就好了,但我看不到一种在C#中轻松完成的方法。
非常感谢您的帮助。

我不太了解日志记录的问题。我将查找读取操作的返回值,因为如果该值为0,则肯定会发生超时。在我重新初始化侦听器之前,我会放置一个日志逻辑来记录超时的事实。如果我误解了您程序的概念,请告诉我。

如果您发送ascii数据,请使用数据中不包含的字符终止数据。对于二进制数据,在消息开头包含字节计数。然后,您不必重新启动侦听器。您通常不会对流执行超时,因为您可能无法获得连续数据。通常在侦听器上捕获关闭事件,因此当客户端关闭连接时,可以停止侦听器。