30. september 2002 - 23:05Der er
5 kommentarer og 1 løsning
Se om der er connections til en port
Jeg vil gerne kunne overvåge en bestemt port på min server for at se om der er forbindelser til det. Koden skal køre i en løkke, hvor der kan kaldes en funktion når der ikke er flere forbindelser.
Det er sådan noget som man kan se hvis man kører netstat - der står "ESTABLISHED" for hver forbindelse, der er åbnet til min service.
Jeg har ikke brug for alle mulige informationer om forbindelserne, bare om der er mindst en eller ej. Kravet er at programmet kun må belaste maskinen minimalt selvom der foretages tjek hver ½ sekund.
Ok, jeg fandt selv en måde at gøre det på - ved at læse /proc/net/tcp og se om der er nogen sockets med denne serverport, der har status 01
Ikke specielt elegant, mest fordi formatet af denne pseudo-fil er dårligt dokumenteret, men det virker, og lader ikke til at bruge mere end maks 0.1% CPU ved 10 refreshes i sekundet.
kamikaze <- hvad vil du have uddybet? Jeg kører linux, og her kan man både det ene og det andet. Blandt andet er det noget, der hedder tcp socket tabel, og den kan man finde i "filen" /proc/net/tcp Jeg gennmløber bare filen linie efter linie og sammenligner feltet for local port med det port, jeg vil holde øje med, og feltet for status med "01", som tilsyneladende er det, der angiver at den er connected. Skide nemt.
Kan det gøres på andre måder end med /proc/net/tcp ???
det overvejede jeg også, men så tænkte jeg at der måske var en måde at løse opgaven gennem socket/winsock API.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.