私のプログラムは、この関数でソケットを開きます:
sockfd = ソケット(AF_INET、SOCK_RAW、IPPROTO_ICMP)
データの送信が完了すると、ソケットが閉じられます。
閉じる (sockfd);
しかし問題は、プログラムがうまく動作せず、ブロックしている場合です。これにより、ソケットは閉じられません。
Linux OS で開かれているすべてのソケットを確認するにはどうすればよいですか?
/proc/net/tcp - 開いている TCP ソケットのリスト
/proc/net/udp - 開いている udp ソケットのリスト
/proc/net/raw -a すべての「生の」ソケットを一覧表示します
これらはファイルですcat
。コマンドを使用して表示します。例えば:
cat /proc/net/tcp
コマンドを使用することもできますlsof
。
lsof は、「開いているファイルのリスト」を意味するコマンドであり、多くの Unix 系システムで使用され、開いているすべてのファイルとそれらを開いたプロセスのリストを報告します。
netstatコマンド を使用できます
netstat --listen
開いているポートと確立された TCP 接続を表示するには、
netstat -vatn
開いている UDP ポートのみを表示するには、次のコマンドを試してください。
netstat -vaun