Windows中是否有命令行工具列出了TCP套接字上当前设置的所有套接字选项?我正在寻找列出进程中所有tcp连接的内容,并且每个连接都会显示设置的套接字选项。
我有一个客户端应用程序(与服务进行通话时)的延迟为零,而另一个客户端应用程序的延迟为45ms-因此,我认为对两个应用程序上设置的套接字选项进行比较可能有助于我找出问题所在。
我正在使用资源监视器来查看tcp连接的延迟。
获取属于给定进程的TCP连接列表很容易。GetTcpTable2()
,GetTcp6Table2()
以及GetExtendedTcpTable()
所有报告打开的TCP连接的拥有进程ID。
另一方面,获取为给定进程的开放套接字设置的选项并非易事。
没有API专门返回给定进程的套接字句柄列表,因此您必须手动枚举内核句柄以查找所需进程的开放套接字:
然后,您必须将自己的代码注入到该过程中,例如使用CreateRemoteThread()
,并具有以下任一代码:
通过复制套接字句柄WSADuplicateSocket()
并将它们传递给您的应用程序,以便它可以WSASocket()
用来访问它们,例如调用getsockopt()
它们。
直接向套接字查询所需的信息,然后将其传递回您的应用程序。
无论哪种方式,都没有API可以检索给定套接字的当前选项列表。您必须一次查询每个单独的选项。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句