我的程序打开一个带有此功能的套接字:
sockfd = socket(AF_INET,SOCK_RAW,IPPROTO_ICMP)
完成发送数据后,套接字关闭:
接近(的sockfd);
但问题是当程序运行不顺畅并且阻塞时。因此插座不会关闭。
如何检查在Linux OS下打开的所有套接字?
答案 0 :(得分:29)
/ proc / net / tcp-open tcp套接字列表
/ proc / net / udp - 打开的udp套接字列表
/ proc / net / raw -a列出所有'原始'套接字
这些是文件,使用cat
命令查看它们。例如:
cat /proc/net/tcp
您也可以使用lsof
命令。
lsof是一个命令,意思是“列出打开的文件”,在很多中都使用了 类Unix系统报告所有打开文件和进程的列表 打开了他们。
答案 1 :(得分:26)
您还可以使用 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
答案 2 :(得分:16)
您可以使用 netstat 命令
netstat --listen
显示开放端口和已建立的TCP连接,
netstat -vatn
要仅显示打开的UDP端口,请尝试以下命令:
netstat -vaun