35

私のプログラムは、この関数でソケットを開きます:

sockfd = ソケット(AF_INET、SOCK_RAW、IPPROTO_ICMP)

データの送信が完了すると、ソケットが閉じられます。

閉じる (sockfd);

しかし問題は、プログラムがうまく動作せず、ブロックしている場合です。これにより、ソケットは閉じられません。

Linux OS で開かれているすべてのソケットを確認するにはどうすればよいですか?

4

3 に答える 3

45

/proc/net/tcp - 開いている TCP ソケットのリスト

/proc/net/udp - 開いている udp ソケットのリスト

/proc/net/raw -a すべての「生の」ソケットを一覧表示します

これらはファイルですcat。コマンドを使用して表示します。例えば:

cat /proc/net/tcp

コマンドを使用することもできますlsof

lsof は、「開いているファイルのリスト」を意味するコマンドであり、多くの Unix 系システムで使用され、開いているすべてのファイルとそれらを開いたプロセスのリストを報告します。

于 2013-07-08T09:40:11.147 に答える
24

netstatコマンド を使用できます

netstat --listen

開いているポートと確立された TCP 接続を表示するには、

netstat -vatn

開いている UDP ポートのみを表示するには、次のコマンドを試してください。

netstat -vaun

于 2013-07-08T11:20:19.213 に答える