Jan*_*bal 14 windows windows-7 port tcpip sockets
如果我想找出哪个进程正在侦听哪个套接字,我可以使用 netstat/TCPview 并立即看到它。但是,可以在不侦听的情况下绑定到地址。如果这样做,它不会出现在 netstat/TCPview 中,但会阻止套接字。
蟒蛇示例:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('0.0.0.0',12345))
Run Code Online (Sandbox Code Playgroud)
端口现在已绑定,并且在第一个实例仍在运行时尝试在第二个实例中执行相同的代码将导致错误。但是,除非您实际开始使用该端口侦听
s.listen(1)
Run Code Online (Sandbox Code Playgroud)
该端口未显示在 netstat/TCPview 中。
问题是: 是否有可能看到哪些端口被绑定(但没有监听),以及哪个进程正在绑定它们?
这样做的背景是我有一个移动范围的1976端口无法绑定,我想知道是什么原因造成的。与此同时,我通过反复试验确定 Internet 连接共享阻止了这些端口,但我仍然对这个问题的答案感到好奇。
编辑:由于受欢迎的要求,这里是我用来查找这些端口的代码:
import time
import socket
for i in range(0,65536):
try:
print "Listening on port", i, '...',
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('0.0.0.0', i))
serversocket.listen(5)
#time.sleep(0.1)
serversocket.close()
print "ok"
except:
print "FAIL"
Run Code Online (Sandbox Code Playgroud)
(您可能希望将输出通过管道传递给 grep 并仅过滤 FAIL)
我今天必须做这件事。Powershell 可以做到这一点Get-NetTCPConnection
。
PS C:\WINDOWS\system32> Get-NetTCPConnection -LocalPort 53100
LocalAddress LocalPort RemoteAddress RemotePort State AppliedSetting OwningProcess
------------ --------- ------------- ---------- ----- -------------- -------------
0.0.0.0 53100 0.0.0.0 0 Bound 40120
PS C:\WINDOWS\system32> get-process -PID 40120
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
2133 1331 13884 30740 30,955.31 40120 1 HWMonitorPro
Run Code Online (Sandbox Code Playgroud)
你应该使用
DWORD GetExtendedTcpTable (PVOID pTcpTable,PDWORD pdwSize, BOOL bOrder, ULONG ulAf, TCP_TABLE_CLASS TableClass,ULONG 保留);
和
TableClass值= TCP_TABLE_OWNER_PID_ALL“或”TCP_TABLE_OWNER_PID_CONNECTIONS“或”TCP_TABLE_OWNER_PID_LISTENER
pTcpTable结构-> MIB_TCPTABLE_OWNER_PID
取决于您想要检索的信息
编辑:
TCP_TABLE_OWNER_PID_ALL 返回 MIB_TCPTABLE_OWNER_PID 结构,该结构是 MIB_TCPROW_OWNER_PID 结构的数组,其中每个结构在绑定且未侦听时应dwState
具有,此结构还提供和MIB_TCP_STATE_CLOSED
dwLocalAddr
dwLocalPort
typedef struct _MIB_TCPROW_OWNER_PID {
DWORD dwState;
DWORD dwLocalAddr;
DWORD dwLocalPort;
DWORD dwRemoteAddr;
DWORD dwRemotePort;
DWORD dwOwningPid;
} MIB_TCPROW_OWNER_PID, *PMIB_TCPROW_OWNER_PID;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4705 次 |
最近记录: |