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
Windows services 如何知道哪个本地应用程序连接到我的套接字(Windows)_Windows Services_Sockets_Tcp_Winsock - Fatal编程技术网

Windows services 如何知道哪个本地应用程序连接到我的套接字(Windows)

Windows services 如何知道哪个本地应用程序连接到我的套接字(Windows),windows-services,sockets,tcp,winsock,Windows Services,Sockets,Tcp,Winsock,我有一个绑定到某个TCP端口的windows服务,该端口用于我的应用程序之间的IPC 是否有一种编程(WinAPI/WinSocket等)方法可以知道哪个应用程序连接到我的端口 i、 e.在我的Windows服务中,我希望获得连接到我的端口的进程的PID。如果您指的是正在使用(侦听或连接)端口的进程,请使用以下命令: netstat-a-b-o-n -a将显示所有连接(即使它们处于侦听状态) -b将显示使用该端口的应用程序可执行文件 -o将显示应用程序的PID -n不会进行dns翻译(您可能不需

我有一个绑定到某个TCP端口的windows服务,该端口用于我的应用程序之间的IPC

是否有一种编程(WinAPI/WinSocket等)方法可以知道哪个应用程序连接到我的端口


i、 e.在我的Windows服务中,我希望获得连接到我的端口的进程的PID。

如果您指的是正在使用(侦听或连接)端口的进程,请使用以下命令:

netstat-a-b-o-n

-a
将显示所有连接(即使它们处于侦听状态)

-b
将显示使用该端口的应用程序可执行文件

-o
将显示应用程序的PID


-n
不会进行dns翻译(您可能不需要这些来了解应用程序),如果您正在寻找与
netstat
相同的WinAPI方法,则不需要进行dns翻译。您可能需要以下API:

使用
TCP\u TABLE\u OWNER\u PID\u ALL
参数查找结果


生成的
MIB\u TCPTABLE\u OWNER\u PID
结构有许多结构,这些结构具有
dwOwningPid
,这是您要查找的进程ID。

谢谢您的回答,但我需要编程方法来实现这一点。WinXP SP2+支持这一点。如果您查找较旧版本的兼容性,请查找AllocateAndGetTcpExTableFromStack API。抱歉,这不是我的问题,我想知道连接到我的端口的应用程序的PID,而不是绑定到端口的应用程序的PID。您无法从远程计算机知道这一点。您只知道源端口和IP。您的问题不太清楚。如果您正在查找连接到某个本地服务的本地应用程序的PID,您可以使用GetExtendedTcpTable或AllocateAndGetTcpExTableFromStack查看两个方面:侦听和连接。如果这有帮助,您介意提高此答案的评级吗?这与我的问题类似:答案基本相同。