如果一个套接字被创建,绑定和监听,而不是它列出netstat -l,可见/proc/net/<L4 type>,等等.这没关系.
但是,如果套接字仅创建并绑定到特定的TCP/UDP/SCTP端口和IP,则在上述位置不可见./proc/<PID>/fd/使用socket:[inode]符号可以看到fd ,但它不能与任何其他表/列表AFAIK相关联.问题是,绑定套接字会阻止同一网络命名空间中的其他进程在同一IP /端口上绑定/侦听.它导致了Errno 98: Address already in use.
那么,是否可以列出(或确定所有者进程)绑定,但不是监听/连接套接字?
编辑:
我们来看看这个Golang TCP示例.你可以运行它go run TCP_bind.go.如果运行两次,则第二次运行失败.
您如何判断流程绑定到哪个端口?或者反过来,当你不能在你的应用程序中使用它时,你怎么能找到谁保留端口55555?