Domanda

Voglio ottenere il numero di connessione syn e stabilita al mio server con c/c ++. Ma non voglio chiamare Popen per eseguire NetStat o qualsiasi altro comando Linux. Sono riuscito a scansionare/proc/net/ip_conntrack e ottenere i numeri. Ma mi rendo conto che la scansione di IP_Conntrack richiede grandi risorse, ogni volta che la mia applicazione invoca quel metodo. C'è qualche altro modo semplice?

È stato utile?

Soluzione

Scansione /proc/net/ip_conntrack non è affidabile perché funziona solo se il tracciamento NetFilter/Connection è abilitato. E non conta solo le connessioni a il tuo server ma anche attraverso il tuo server (se agisce come router).

Meglio sarebbe ottenere le informazioni negli stessi luoghi di netstat fa: /proc/net/tcp, /proc/net/tcp6 (e file simili per UDP e altri protocolli se ci si preoccupano). Tale importo più o meno al reimplementazione netstat All'interno della tua applicazione però. Devi chiederti se ne vale la pena. Inoltre, è portatile (più o meno) da chiamare netstat mentre leggere quei file direttamente è specifico per Linux.

So che sei preoccupato per le risorse richieste per scansionare il tavolo completo ogni volta, ma non credo che ci sia un voce in capitolo per "iscriverti" e ricevere notifiche quando vengono stabilite o demolite nuove connessioni. La cosa più vicina a cui riesco a pensare a qualcosa del genere sarebbe annusare l'interfaccia di rete (usando LibpCap) e tenere traccia delle configurazioni di connessione e degli smentite da solo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top