Nog iets dat ik in de afgelopen weken nodig had was een HOSTS bestand op de pocket pc.

De eerder genoemde webservice werd namelijk op het interne netwerk bij ons op het werk geplaatst. Aangezien ik via ActiveSync m'n applicatie wilde debuggen en tegelijkertijd met de webservice wilde communiceren had ik een HOSTS bestand nodig.

Ja, ik weet dat je de webservice ook via het IP-adres kunt benaderen, dus http://192.1868.2.8/Webservice/Service.asmx.
Het vervelende is echter dat wanneer je een semi-release build maakt is dat je een zo representatief mogelijke build wilt maken.
Ik wilde dus de domeinnaam gebruiken die ook gebruikt wordt bij de klant van het product, dus bijvoorbeeld http://www.webservicedomein.nl/Webservice/Service.asmx.

Tegen beter weten in ging ik ongeveer 30 seconden zoeken naar een HOSTS bestand op de pocket pc. Deze bestaat niet, wat ik eigenlijk ook wel wist.
Omdat ik deze functionaliteit toch nodig had ben ik op zoek gegaan naar de oplossing.
Deze vond ik al redelijk snel via de Google discussiegroepen.
Op deze site http://windowsmobilepro.blogspot.com/2006/04/etchosts-file-equivalent-in-windows.html wordt namelijk uitgelegd hoe je zoiets voor elkaar kunt krijgen.
Via het register moet je een bepaalde host dus invoeren.

Aangezien ik niet alles over ga typen, hier een quote:

How to make "hosts" in Windows Mobile devices for name resolution?

Although there is no hosts file in Pocket PC or Smartphone's file-system, registry is the place to put such name-IP mappings. To achieve this, add a subkey to HKEY_LOCAL_MACHINE\\Comm\\Tcpip\\Hosts for each machine name that must be resolved, then add binary values for the IP address (value name "ipaddr") and expiration time (value name "expiretime"). The following shows the export of a key entry that resolves the name "hello" to IP address 161.163.165.169. Expiretime is a huge number, indicating no expiration. For the sole purpose of name resolution, expiretime is not strictly needed.


[HKEY_LOCAL_MACHINE\\Comm\\Tcpip\\Hosts\\hello]
"ipaddr"=hex:a1,a3,a5,a9
"ExpireTime"=hex:99,99,99,99,99,99,99



Zoals is te zien moet je het IP-adres als binaire waarde opgeven en de hostnaam als key.
Tot mijn verbazing heeft dit tot 2x toe ook goed bij mij gewerkt.
Na die 2x lukte het me niet meer. Waarschijnlijk heb ik toen zelf iets fout gedaan met de verbinding of iets dergelijks.
Ik kan me ook herinneren dat ik het IP-adres heb omgedraaid, vanwege big-endian en little-endian systemen met het idee dat het zou kunnen helpen.
Ook heb ik geprobeerd om het gehele IP-adres in te vullen in het 'decimale' gedeelte van een binair veld in de registry editor.

Ik weet niet meer zeker welke oplossing goed heeft gewerkt.
Mocht je het nodig hebben, dan kun je ze altijd allemaal even proberen en anders even verder zoeken op de discussiegroepen. Volgens mij wijzen ze allemaal naar de ge-quote oplossing, maar zelf een beetje zoeken kan natuurlijk ook geen kwaad.
comments powered by Disqus