Avatar billede noden Nybegynder
12. marts 2004 - 11:39 Der er 6 kommentarer og
1 løsning

Afbryde connect()

Jeg har lavet en portscanner og den virker fint på localhost.
Problemet er hvis jeg scanner min routers exponerede IP så støder jeg ind i en timeout.
Denne er på de fleste linus dists. 75 sekunder så det vil tage 750 sekunder at scanne 10 porte.
Jeg har forsøgt at afbryde den med et signal men min dist genoptager desværre connect() efterfølgende.
Jeg ville egentlig også helst benytte select() men har ikke kunnet få det til at virke.

Min oprindelige kode ligger på http://hardturn.dk/files
Er her nogen som vil prøve at udvide den for mig til at bruge select()?
Så simpelt så muligt, så jeg kan se hvad jeg har lavet forkert?
Avatar billede noden Nybegynder
12. marts 2004 - 12:29 #1
Lige et lille tillæg:
Ville man ikke normalt bruge select til dette?
Ville man lave flere parallelle sockets på een gang for at optimere?
Avatar billede segmose Nybegynder
12. marts 2004 - 14:17 #2
En mulighed er at lave den threaded, så du oprettet en tråd for hver port du vil scanne og nedbringe tiden til timeout'en.
Avatar billede noden Nybegynder
12. marts 2004 - 14:21 #3
Umiddelbart kan jeg ikke ændre timeouten i Linux uden at recompile det i kernen da det er et systemkald men det vil påvirke alle applikationer.
Jeg er nød til at afbryde kaldet til connect()
Jeg prøvede at lave det med nonblocking sockets, men det fik jeg heller ikke til at virke. (Hvilket desværre siger lidt om min erfaring med netværksprogrammering :-()
Men det lyder som en god idé at lave en tråd for hver socket så det hele kører "samtidig".
Det ville i hvert fald minimere eksekveringstiden til max 75 sekunder alt i alt.
Engentlig rigtig god idé!
Avatar billede noden Nybegynder
12. marts 2004 - 14:23 #4
Ja, det kunne vel egentlig løse mit problem! Men jeg er stadig nysgerrig ang. select().
Avatar billede segmose Nybegynder
12. marts 2004 - 14:32 #5
select er først når du har opnået forbindelse, så du ikke behøver at lave busy wait, men jeg fatter heller ikke at man ikke kan angive en timeout i connect.
Avatar billede noden Nybegynder
12. marts 2004 - 14:54 #6
Jeg prøver din løsning Seqmose.
Avatar billede segmose Nybegynder
12. marts 2004 - 15:59 #7
Tak, held og lykke med det.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester