で各ネットワークポートに必要な詳細を取得したいと思います/etc/services
。各ポートの状態を取得するためにC ++プログラムを開発する必要がある場合は、どうすればよいですか?私は私のプログラムで電話やそのようなものを許可しませんnetstat
。ss
情報を取得できるファイルはファイルシステムにありますか?
ベストアンサー1
ANDに対して外部結合を実装するかどうか、netstat -a -t -u
または他のものを実装するかどうかはまだ明確ではありませんが、以下は役に立つかもしれないいくつかのアイデアです。/etc/services
netstat -a -t -u
TCPおよびUDPポート番号の範囲は1〜65536です。
/etc/services
あなたが言及したファイルは次のとおりです。サブセット~の有名な港そして登録されたポート。より大きなリストは次の場所にあります。IANAサービス名とトランスポートプロトコルポート番号レジストリ。あなたはそれを使用することができますgetService()検索にリストされているすべての履歴を検索します/etc/services
。/proc/net/tcp
Linuxでは、ファイル/proc/net/tcp6
を読み取って/proc/net/udp
、受信、接続、接続、または部分的に閉じられたすべてのソケットと、そのローカルおよびリモートアドレスとポートのリストを取得できます/proc/net/udp6
。出力はnetstat -a -t -u -n
このファイルとほぼ同じですが、より美しいです。アドレス、ポート番号、状態はすべて16進数です。次の名前を使用して、ステータスフィールドのクールなバージョンを作成できます/usr/include/netinet/tcp.h
。
数える { TCP_ESTABLISHED = 1, TCP_SYN_SENT, TCP_SYN_RECV, TCP_FIN_WAIT1, TCP_FIN_WAIT2, TCP_TIME_WAIT, TCP_閉じる、 TCP_CLOSE_WAIT、 TCP_LAST_ACK、 TCP_リスニング、 TCP_CLOSING };
- FreeBSDでは呼び出すことができ
sysctlbyname("net.inet.tcp.pcblist",...)
、構造体配列を検索しますxtcpcb
。netstat
これらの構造がどのように解釈されるかを確認するには、ソースコードを調べるのが最善です。