我正在用 C# 开发一个服务器应用程序。客户端可以连接到服务器并发出各种请求。目前,当客户端连接时,我会生成一个新线程来处理请求。我正在使用 TCPClient 类来处理客户端连接。我的服务器工作如下:
- 客户端通过请求连接到服务器
- 服务器处理请求
- 服务器等待查看客户端是否有更多请求
- 如果客户端在某个超时时间内没有发出另一个请求,服务器将终止连接
我的问题如下:
当我从 TCPClient 类获得的 NetworkStream 对象中读取数据时,如果没有可用的数据,则 NetworkStream Read() 方法不会阻塞。当服务器到达第 3 步时,我想在 NetworkStream 上设置一些超时,如果客户端在此期间没有发出任何请求,则服务器应该在抛出超时异常时终止连接。当我的服务器到达第 3 步时,NetworkStream Read() 方法不会阻塞,不管我将它的 ReadTimeout 属性设置为什么。任何人都可以帮助我,或者建议一种更好的方法来做我想做的事情。
谢谢