/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
Bech_bb 500
kyllekylle 500
jdjespers.. 500
gibson 300
scootergr.. 300
molokyle 287
10  strarup 270
WSAAsyncGetHostByName
Fra : Eric Jensen


Dato : 15-05-06 14:38

Hej gruppe!

Jeg har igennem nogle år kørt min egen server, som modtager nogle
registeringer.
Bl.a. modtager den en dns/host address, og nu har jeg fået behov for at
resolve
denne så min server kan tjekke selve ip'en. At bruge WSAAsyncGetHostByName
er ikke det store problem udover, at min server applikation er skrevet som
en windows
service, og derfor ikke har noget window handle (HWND). Og microsoft har jo
været så intelligente,
at kryble brug fra console og services da disse ikke har window handles.

Min spørgsmål er så, er der nogen måde man kan omgås dette på?
Finders der evt. et api kald der vil retunere et "virtual" hwnd?
Eller er der andre måder, at non-blocking lookups på?

På for hånd tak!



 
 
Bertel Brander (15-05-2006)
Kommentar
Fra : Bertel Brander


Dato : 15-05-06 16:45

Eric Jensen wrote:
> Hej gruppe!
>
> Jeg har igennem nogle år kørt min egen server, som modtager nogle
> registeringer.
> Bl.a. modtager den en dns/host address, og nu har jeg fået behov for at
> resolve
> denne så min server kan tjekke selve ip'en. At bruge WSAAsyncGetHostByName
> er ikke det store problem udover, at min server applikation er skrevet som
> en windows
> service, og derfor ikke har noget window handle (HWND). Og microsoft har jo
> været så intelligente,
> at kryble brug fra console og services da disse ikke har window handles.
>
> Min spørgsmål er så, er der nogen måde man kan omgås dette på?
> Finders der evt. et api kald der vil retunere et "virtual" hwnd?
> Eller er der andre måder, at non-blocking lookups på?

Er det nødvendigt at bruge WSAAsyncGetHostByName? eller kan du
bruge gethostbyname?
Du kan evt. kalde den fra en tråd oprettet til formålet, hvis
ikke du ønsker at vente.
Ellers burde der ikke være noget problem i at lave et usynligt
vindue som du kan bruge.

--
Absolutely not the best homepage on the net:
http://home20.inet.tele.dk/midgaard
But it's mine - Bertel

Eric Jensen (16-05-2006)
Kommentar
Fra : Eric Jensen


Dato : 16-05-06 13:56


"Bertel Brander" <bertel@post4.tele.dk> skrev i en meddelelse
news:4468a20f$0$165$edfadb0f@dread11.news.tele.dk...

> Er det nødvendigt at bruge WSAAsyncGetHostByName? eller kan du
> bruge gethostbyname?
> Du kan evt. kalde den fra en tråd oprettet til formålet, hvis
> ikke du ønsker at vente.
> Ellers burde der ikke være noget problem i at lave et usynligt
> vindue som du kan bruge.

Jeg kan sagtens bruge gethostbyname, men kun som en nødløsning.
programmet er en windows service, og kører ikke som den bruger der er
loggede ind på systemet (har skrivebord mm.), i øvrigt er der aldrig nogen
loggede ind på serveren. Ifølge msdn kan en windows service ikke have noget
vindue. Og derfor ikke bruge WSAAsyncGetHostByName. gethostbyname er "evil"
da dette er en IOCP server, hvor worker threads under ingen omstændighedder
må blokeres. Så ja jeg kunne snildt lave en thread pool der har til opgave
at resolve disse dns navne. Men jeg havde nu bare håbet på, at det ikke var
sandt, at microsoft har begrænset dette til programmer med it GUI.



Eric Jensen (16-05-2006)
Kommentar
Fra : Eric Jensen


Dato : 16-05-06 14:03

Som en ekstra kommentar, har jeg inden jeg smed denne post lavet en test.

Et queue med 100 forskellige dns addresser.
1 app der resolver dem alle med gethostbyname via 2 worker threads
og
1 app der resolver dem alle med wsaasyncgethostbyname.

Resultatet er, at nummer 2 skalere meget bedre, og dns addresserne bliver
hurtigere fundet. Fordi, at async kan slå mange flere op på samme tid.

Og jeg er ikke interseret i, at have resolver threads medmindre jeg pine og
død er nød til det hehe.

//eric



Bertel Brander (17-05-2006)
Kommentar
Fra : Bertel Brander


Dato : 17-05-06 18:43

Eric Jensen wrote:
> Som en ekstra kommentar, har jeg inden jeg smed denne post lavet en test.
>
> Et queue med 100 forskellige dns addresser.
> 1 app der resolver dem alle med gethostbyname via 2 worker threads
> og
> 1 app der resolver dem alle med wsaasyncgethostbyname.
>
> Resultatet er, at nummer 2 skalere meget bedre, og dns addresserne bliver
> hurtigere fundet. Fordi, at async kan slå mange flere op på samme tid.
>
> Og jeg er ikke interseret i, at have resolver threads medmindre jeg pine og
> død er nød til det hehe.

Jeg går ud fra at dette:

http://groups.google.dk/group/comp.os.ms-windows.programmer.win32/browse_thread/thread/5fd4d327e5fcff19/48a8f1fd3c07c9dc#48a8f1fd3c07c9dc

Betyder at problemet er løst?

--
Absolutely not the best homepage on the net:
http://home20.inet.tele.dk/midgaard
But it's mine - Bertel

Eric Jensen (18-05-2006)
Kommentar
Fra : Eric Jensen


Dato : 18-05-06 11:23


"Bertel Brander" <bertel@post4.tele.dk> skrev i en meddelelse
news:446b609f$0$189$edfadb0f@dread16.news.tele.dk...

> Jeg går ud fra at dette:
>
> http://groups.google.dk/group/comp.os.ms-windows.programmer.win32/browse_thread/thread/5fd4d327e5fcff19/48a8f1fd3c07c9dc#48a8f1fd3c07c9dc
>
> Betyder at problemet er løst?

Ja.

//eric



Søg
Reklame
Statistik
Spørgsmål : 177428
Tips : 31962
Nyheder : 719565
Indlæg : 6407944
Brugere : 218877

Månedens bedste
Årets bedste
Sidste års bedste