My Windows Mobile DynDNS Client

May 23, 2007

Did you know every Windows Mobile Smartphone has a dynamic public IP address? I was reading the other day about how we’re quickly running out of IP addresses. What I read again and again claimed cell phones in Europe and Asia had a lot to do with this. I wasn’t really worried about this because the new IP standards IPv6 gives us plenty new numbers. But this got me curious and a quick Google later I realized something I should have already known. Smartphone’s have public IP addresses. Checking my Q I realized the IP address was public and dynamic. I would have preferred a static number, but I still thought that was fantastic.

Just in case you don’t know about IP addresses I’ll give you a quick primer. IP addresses are like phone numbers on the most common kind of computer networks. Some numbers are private; those can’t be accessed from any PCs that aren’t on the same private network (typically this is how computers are networked at home and in the office). Having a private IP address is nice because people can’t access your PC. In all too familiar twist, that’s also why they’re lousy. Sometimes you might want to give someone your IP address, just like you randomly might want to give someone your phone number.

So, there are two kinds of public IP addresses; Dynamic and Static. The dynamic kind change seemingly at random, the static ones never change. Cell phones use the dynamic kind. That’s a little lame because if you give someone you’re IP address (think phone number) your number might change before they use it. Well, geeks already thought about this a long time ago. They wrote software that update DNS servers whenever your number changes. DNS servers are the magic boxes that map all the URLs like www.google.com to IP addresses. Today there are plenty of sites like www.DynDNS.org that map your dynamic public IP address to a domain name for free.

In other words, http://yourphone.dyndns.org could point to your phone. You could simply give anyone that URL and they could access anything you wanted to expose from your phone. For a guy like me, who uses his phone like an iPod, this is nice. This means I can just tell people to hit my URL whenever they want to download a song I have. …Is this illegal? I hope not, I pay for my music on URGE. …Let’s just say this is hypothetical to be safe.

Another nifty feature is that people browsing the site running on my Smartphone could see photos instantly the moment I took them with my phone’s camera. My blog could also be served up directly from my phone with new posts the moment inspiration struck. All sorts of other nifty things like that.

…The only down side is that I have a CDMA phone that doesn’t support phone and internet access at the same time — My phone goes to voicemail while I’m online. GSM phones don’t have this problem. Maybe I’ll end up with one of those.

So, I think I’m way ahead of the curve here. But I want to help push it along. There wasn’t an easy way to use DynDNS from my Smartphone, so I wrote this program. It maps your Smartphone’s IP directly to a URL (like http://myphone.com) quickly and painlessly. It’ll be posted here eventually, I also wrote a small web-server for Smartphones and I want to release them at the same time. Here’s some screenshots (with fake numbers). You’ll have to excuse my language. This won’t be the release version’s title. A few problems had me cursing at the program while I was coding it, one of those names just stuck.

31 Responses to “My Windows Mobile DynDNS Client”

  1. 8r13n Says:

    Oh, so I didn’t forget about this project. My TCP server has been completed, the HTTP server is in debug mode and the Web Server (which incorporates the DNS, TCP and HTTP modules) is almost done. Lastnight I figured out how to stream audio and video from my server. I just needed to change the content type and send the stream. I pass a MemoryStream from the front back to the TCP server. It handles the actual transmission. Simple right? I wish all code was that straightforward.

    The best part is that all of this was written in pure C# using small objects like Hashtables and Arrays. I only used the Socket class under the hood for my network IO. When completed this will run on any version of Windows with the 2.0 framework. This includes CE, Pocket PC, WM Smartphone, Vista, XP, etc.

  2. Tariq Says:

    This is great, so when do you think you’ll publish this dyndns client for windows mobile?

    And where will it be posted?

    Thanks,
    Tariq.

  3. Mike Says:

    If you post this you will be a golden god 🙂 Will your program be able to differentiate between the mobile connection and the wifi connection? It would be nice to be able to control which ip gets updated

    Thanks,

    Mike

  4. 8r13n Says:

    Nothing ready to post yet, but I’m getting closer.

  5. james Says:

    can’t wait to try it out!

  6. rai Says:

    Still not sign of a Dyndns client for a WinMo device? I would love to use it together with Coolcamera software and then use that old WinMo device as a wireless webcam in my mountain house to check the weather there 😉
    Kind regards

  7. 8r13n Says:

    Here’s the deal. I wrote this while I lived on the east coast, since then I moved to the west coast. I know this code is on a backup drive, but I’m not sure exactly where it is. …And I’m hella busy these days. I’m actually packing right now to fly out to India again.

    …But I will post this code as soon as possible.

  8. Jeff Axelrod Says:

    Your dyndns client would be very helpful. Please look for it!

    http://www.tipninja.com

  9. 8r13n Says:

    I’m in India at the moment, but I will when I return.

  10. kocoman Says:

    Hi, any progress? TIA

  11. 8r13n Says:

    Sorry, as soon as I landed state-side my employer bumped up the pressure on a deadline. …So I haven’t worked on this. But the good news is that the deadline is tomorrow! So I should be returning to WiMo fun soon enough. What features are the most important to you for this client? …Right now it just keeps your IP in sync with DynDNS, and lets you share files (open via url or email/text invitation). …Do you want it to do anything else?

  12. u235 Says:

    For me, basic dyndns functionality would be great. I’m not away of any similar projects that still run on WM6.

  13. 8r13n Says:

    …Believe it or not, I’m still out of town on business. Hopefully I’ll get back and get to this soon.

    …But what’s this jive about Windows Mobile 6? How would that break a DynDNS client? I used .Net, I can’t imagine why the functionality in networking packages would change. …Maybe there’s some funky new firewall BS with WM6? Any clue? I’m on a WM5 device, so I wouldn’t know.

  14. james Says:

    I’ve got a Windows Mobile 6.1 device so I could test it out when ready. I think the above poster just meant there isn’t really any client for WM5 or WM6. Looking forward to it!

  15. u235 Says:

    All I meant was that I have tried a couple of other dyndns applications on my WM6 device that were non-functional (presumably because they were binaries originally written for pocketpc and enough of the networking guts have changed since?).

    For example, this is one such app I tried (unsuccessfully);
    http://www.zdziarski.com/projects/dyndns/

    It would be neat to have a modern, functional dyndns client! I’m also looking forward to this tool 🙂

  16. aaaa Says:

    many mobile providers and hostspot providers too don’t assign a public IP to their mobile phones, that’s why
    Such a tool shoould check via a http connection if “my local ip=my seen ip” then stop if not equal.

  17. 8r13n Says:

    …Yeah.

    1) I obviously won’t make any attempt to support phones on networks that don’t expose public IPs. Can you name a US service provider who does that?

    2) I won’t support running on HotSpots, at all. I’ve never seen a public IP come from a hotspot. I’ve always got a local IP.

    3) …I haven’t forgot about this project, I’ve just been very busy this year. I’ll get to it eventually. …And then you’ll understand why #1 and #2 don’t matter.

  18. Adam Luz Says:

    http://www.zdziarski.com/projects/dyndns/ does work. I tried it. My screen broke on my phone so i installed thing along with my mobiler for remote connection and now the client updates my ip and I remote connect to my phone using the mymobiler…

  19. paulains Says:

    AT&T uses private IP addresses on the default PDA plan (connecting through a WAP server). If you double your monthly rate and get the tethering plan you can get a public dynamic IP address.

    Also, turning your phone into a server probably isn’t a good idea, because
    1) Your upload speeds will probably be lower than what you’d have with a home broadband connection
    2) Having a data connection like 3G running all the time really sucks down the battery on the phone
    3) You can’t do things like tether your phone to your PC unless you don’t care that someone might be in the middle of a download from your phone
    4) Exposing your phone to the public is probably a Bad idea

    That’s why the best solution is to push your phone data to a secure server, and have people download from that server via a website or FTP or whatever. So if you really want to share your phone data you should write a program that monitors your photos directory, or your music directory, and uploads any new files that appear in these directories.

  20. james Says:

    any news? thanks!

  21. stone Says:

    Hi, any news? cu

  22. jwalker Says:

    Hi,

    There’s any update on this project?, dead post?.
    Somebody else has been evaluated any other project, apart from the well knowed developed in the past, and don’t work on new WM6.1?

    Regards.

  23. 8r13n Says:

    This project isn’t dead, it’s just been delayed. I switched to AT&T, which doesn’t give out a public IP address. So I can’t test my application anymore.

    This was really simple to write though. Basically in .Net you can easily loop through the IP addresses assigned to the phone in .Net and then use DynDNS’s simple API to update your domain on DynDNS.

    The DynDNS API can be found here…

    http://www.dyndns.com/developers/specs/

    This is the code required to get a list of IP addresses…

    System.Net.IPHostEntry hostEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());

    System.Net.IPAddress[] ipAddresses = hostEntry.AddressList;

  24. jwalker Says:

    it’s really goood to know my friend, you dont let die your baby.

    do you include in your project the possibility to catch any active ip address to report to ddns? by example actually im well covered by wifi hotspots.

    im not a developer, but i support your efforts with fully enthusiasm.

    have a great day.

    actually im replying you from my htc tytn 2.

  25. 8r13n Says:

    If you’re connected via WiFi with a public external IP address, and you’ve got port forwarding turned on in your WiFi router then this app would work fine.

    Most WiFi user’s don’t have access to setup port forwarding on the router, and the router only gives it’s users private IP addresses. So in most cases this won’t be possible.

    On your WiFi at home though, with a little work, it should work for almost anyone (since you have access to forward ports from the router).

  26. jwalker Says:

    hello my friend.
    actually im on dmz zone under 5 of the 8 hotspots that brings me coverage, and I will setup special rules of port forwarding for the rest.
    Im the system administrator of this hotspots.

  27. Avi Alkalay Says:

    I’m also waiting for this app to be ready and I think you are getting too long to release it.

    It YES makes sense to DynDNS a private IP as 10.x.y.z. For example, if I assign mymobile.dyndns.org to 10.1.2.3, I’ll be able to access the hostname mymobile.dyndns.org from other computer on the 10.x.y.z network, by name. In other words, the DynDNS client should not decide which networks to register or not in DynDNS. It must be as simple as GetMyIP->RegisterDynDNS. No logic or decision in the middle.

    Regards

  28. BBurke Says:

    Any update on this. I would be happy to thoroughly test this for you.

  29. Bort Jameson Says:

    If anyone is still interested, I have written a DynDNS client in .NET for Windows Mobile and it works. I couldn’t find one anywhere.

    I also have a very basic and somewhat buggy Windows Mobile web server which is all code I borrowed from someone’s blog post somewhere and adapted to work with the compact framework (.NET mobile).

    Lastly, I have an application I wrote that gets my current location from my phone’s GPS and updates a web page served by my phone with my location and a link to my location on Google Maps. Clicking on the link shows me graphically where I am. Of course, if I give someone the address to my phone/web server, they can see where I am located as well.


  30. hi…

    i have done my dyndns client for windows mobile. please look at
    remorftpmobile.wordpress.com

  31. Levi DeHaan Says:

    hello just wondering if you would post your code i can write in c# quite a few other languages as well 🙂 got me a sweet htc hd2 dont want to reinvent the wheel and i want to write a dyndns client so i can more easily access my phones ftp server. just email me back with the code or post to google code and make me admin for svn commits or something 🙂 thanks -=Levi=-


Leave a reply to Jeff Axelrod Cancel reply