我的程序用这个函数打开一个套接字:
sockfd = 套接字(AF_INET,SOCK_RAW,IPPROTO_ICMP)
完成发送数据后,套接字关闭:
关闭(sockfd);
但问题是当程序运行不好并且被阻塞时。因此套接字不会被关闭。
如何检查在 Linux 操作系统下打开的所有套接字?
您还可以使用ss实用程序转储套接字统计信息。
转储摘要:
ss -s
Total: 91 (kernel 0)
TCP: 18 (estab 11, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0
Transport Total IP IPv6
* 0 - -
RAW 0 0 0
UDP 4 2 2
TCP 18 16 2
INET 22 18 4
FRAG 0 0 0
要显示所有套接字:
ss -a
要显示 UDP 套接字:
ss -u -a
显示 TCP 套接字:
ss -t -a
在这里你可以阅读 ss man: ss
/proc/net/tcp - 打开的 tcp 套接字列表
/proc/net/udp -打开的 udp 套接字列表
/proc/net/raw -a 列出所有“原始”套接字
这些是文件,使用cat
命令查看它们。例如:
cat /proc/net/tcp
您也可以使用该lsof
命令。
lsof 是一个命令,意思是“列出打开的文件”,在许多类 Unix 系统中用于报告所有打开文件的列表以及打开它们的进程。
您可以使用netstat命令
网络统计——听
要显示打开的端口和已建立的 TCP 连接,
netstat -vatn
要仅显示打开的 UDP 端口,请尝试以下命令:
网络统计-vaun