您可以轮询另一个程序创建的TCP套接字吗? Windows 7是否可以编写一个C++或.NET程序来查找另一个程序所创建的现有连接TCP套接字是否在其发送或接收缓冲区中有任何数据?

您可以轮询另一个程序创建的TCP套接字吗? Windows 7是否可以编写一个C++或.NET程序来查找另一个程序所创建的现有连接TCP套接字是否在其发送或接收缓冲区中有任何数据?,windows,sockets,winapi,Windows,Sockets,Winapi,用例:有一个16位的遗留应用程序与一些.NET应用程序进行TCP通信。为了解决遗留应用程序中的并发问题,如果我们可以检查彼此连接的两个套接字中的任何一个,并判断是否有一些数据在一端发送,但在另一端尚未接收,这将非常有用。 连接是TCP,套接字位于环回接口(127.0.0.1)上 方法:WSADuplicateSocket()+WSAPoll()可能是解决方案,但我不知道如何通过编程获得套接字句柄,因为套接字是由另一个程序创建的。WSADuplicateSocket()必须在创建套接字的过程中调用

用例:有一个16位的遗留应用程序与一些.NET应用程序进行TCP通信。为了解决遗留应用程序中的并发问题,如果我们可以检查彼此连接的两个套接字中的任何一个,并判断是否有一些数据在一端发送,但在另一端尚未接收,这将非常有用。 连接是TCP,套接字位于环回接口(127.0.0.1)上


方法:WSADuplicateSocket()+WSAPoll()可能是解决方案,但我不知道如何通过编程获得套接字句柄,因为套接字是由另一个程序创建的。

WSADuplicateSocket()
必须在创建套接字的过程中调用。因此,即使您可以在另一个进程中找到打开的套接字句柄,您也必须将代码注入该进程,以便复制其套接字并将其发送到您的进程。可以在另一个进程中找到一个打开的套接字句柄,但实现起来并不简单:谢谢,勒布先生!这似乎是唯一的办法。然而,我们选择不实施它。