ehm...questo è cross-posting ... cmq puoi usare netstat e tramite delle preg (espressioni regolari) puoi estrarre i dati che ti servono e fare i conteggi :)
codice:
C:\Documents and Settings\daniele_dll>netstat
Connessioni attive
Proto Indirizzo locale Indirizzo esterno Stato
TCP pcdaniele:2888 localhost:2889 ESTABLISHED
TCP pcdaniele:2889 localhost:2888 ESTABLISHED
TCP pcdaniele:1052 server2.eonext.com:4321 ESTABLISHED
TCP pcdaniele:2257 64.233.183.104:http ESTABLISHED
TCP pcdaniele:2288 163-99.amazon.com:http ESTABLISHED
TCP pcdaniele:2300 221.147.214.24:36309 ESTABLISHED
TCP pcdaniele:2356 64.233.183.104:http ESTABLISHED
TCP pcdaniele:2416 host136-0.pool8259.interbusiness.it:4662 TIME_W
AIT
^C
C:\Documents and Settings\daniele_dll>
ad es questa è la stampa di un netstat su windows
a te ovviamente serve il contrario ... ovvero serve che nella sezione indirizzo locale vi sia :TUAPORTA e poi l'altra colonna indica chi è connesso
L'ultima colonna deve stare su ESTABLISHED xche indica connessione stabilita :)
quindi ti estrai tutti questi dati e poi, tramite un array, ti fai una semplice somma
ad esempio...
codice:
$activeconns = array('80' => 0, '110' => 0);
$result = `netstat -n`;
$rows = explode("\n", $result);
while(list(, $row) = each($rows)) {
$row = trim($row);
if (preg_match('/^[a-z]+[ ]+[a-z0-9\._-]+?\:([0-9]+).+?ESTABLISHED$/i', $row, $results)) {
if (isset($activeconns[$results[1]])) {
$activeconns[$results[1]]++;
}
}
}
con questo codice tirerai fuori l'elenco delle porte!
ti basta definire l'array activeconns con i valori che ti servono e sei apposto :)
Al momento nell'array sono settate le porte 80 e 110