调试 C# Tcp 服务器中可能孤立的套接字

本文关键字:套接字 Tcp 服务器 调试 | 更新日期: 2023-09-27 18:31:35

我没有提供我的特定代码,因为它太多了。 无论如何,我怀疑我在使用 C# 构建的自定义 Tcp 异步服务器中孤立套接字时遇到了问题。 它面向框架 4,是一个生产服务(问题只出现在生产中)。 关于套接字的一般调试,我有两个问题。

  1. 如何确定我是否有孤立的套接字? 一些 perfmon 计数器或类似的东西?

  2. TcpClient.Close() 立即关闭所有底层流不是真的吗? 我看到了冲突的帐户,所以我担心由于服务没有明确关闭底层流,这可能是问题的根源(如果确实是孤立套接字的问题)。

调试 C# Tcp 服务器中可能孤立的套接字

  1. 尝试 http://www.nirsoft.net/utils/socket_sniffer.html 来监视计算机上打开的套接字。
  2. 检查TcpClientLingerState属性的值。此外,.NET TcpClient.Close()方法调用最终会导致在ws2_32.dll中调用 WINAPI shutdown()函数,因此,如果要调试,则可以链接到调试库,并在调用时放置断点等shutdown()