02. april 2003 - 11:01Der er
14 kommentarer og 1 løsning
socket connect() timeout ???
Hejsa
Jeg har en lille stump kode der kan connecte til en specificeret server - blot for at se om den er levende. Problemet er bare at hvis IP adressen der testes op imod SLET ikke svarer på noget som helst - så går der 15-30 sekunder før connect() funktionen giver op.
Kan man lave noget smart kode der max. venter 1 sekund før den giver op ??
Nogle gode foreslag / eller evt. fungerende kode...?
Vil det sige at non-blocking også kan indstilles så "connect()" returnerer MED DET SAMME - og at man så senere kan teste på om socket'et er blevet oprettet korrekt...?
Hm... jeg testede lige selv...jeg tilføjede dette lige før connect:
unsigned long a = 1; unsigned long *aa= &a; if( ioctlsocket( s, FIONBIO, aa ) != 0 ) { cout << "DEN KUNNE IKKE GØRES NON-BLOCKING!!!!\n"; }
Men programmet hænger fast på connect() hvis jeg fx. giver en IP på en server der ikke svarer....så NON-BLOCKING er åbenbart også kun på forbindelser der ER etableret...
Er der nogle der har andre ideer? Evt. noget med UDP....kan det måske virke??
1. Maskinen sidder bag en firewall - der er lukket for ping.
2. Maskinen er ikke en maskine - men 3. Og i fremtiden måske 10. Via firewallen kan man jo godt fortælle at port 5001 skal gå til PC1, 5002 til PC2 o.s.v. Men det kræver jo lige et lille program.
Jeg har set flere programmer (fx. ServersAlive) der kan se om en ting er levende. Men jeg skal bruge et MEGET LILLE program - fordi der skal generes grafer over hvornår en maskine har været tilgængelig.
Nu kender jeg ikke dine firewall administratorer men de fleste jeg kender ville flippe totalt ud over at skulle lukke op for en 3-10 non-standard porte for UDP.
Men jeg kan selvfølgelig godt se at ping ikke er løsningen.
Der er ikke mulighed for at vende problem-stillingen så de 3-10 maskine connecter og fortæller at de er i live ? Bare et vildt skud i tågen.
Tja, nu har jeg bare ikke arbejdet så meget med tråde endnu...men jeg ser lige på det.
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.