Click here to Skip to main content
11,922,641 members (54,952 online)
Click here to Skip to main content
Add your own
alternative version

Tagged as


15 bookmarked

Finding the external IP address of your machine, with a timeout, in C#

, 16 Jan 2012 CPOL
Rate this:
Please Sign up or sign in to vote.
How to find the external IP address of your machine, with a timeout, in C#.

If you try to find the IP address your machine is using, you can follow two paths. The most obvious one is:

string host = System.Net.Dns.GetHostName();
System.Net.IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(host);
System.Net.IPAddress[] addr = ipEntry.AddressList;
for (int i = 0; i < addr.Length; i++)
    if (addr[i].AddressFamily != System.Net.Sockets.AddressFamily.InterNetwork)
    return addr[i].ToString();

return "";

Unfortunately, in most cases, people are connected to the internet through a router, and therefore each machine is assigned with an internal IP address of the private LAN network, assigning the external IP address to the router only, not to each machine. Finding this external address directly is not trivial, as you would need to deal with the router itself, with different router models, etc.

The easiest way to find the external IP address is to do a web request to one of the several websites out there specially designed to provide you with that address, like,, etc. In this case, we will use the last one.

Of course, doing a web request can take time, specially if there is no internet connection available, as the default timeout can take several seconds. This function will do the job for you, and accept a custom timeout:

/// <span class="code-SummaryComment"><summary>

It works pretty obviously. It just uses the DownloadDataAsync method, instead of the synchronous DownloadData, and waits for a certain amount of time. If no response is received in that time, it cancels the async method and returns null.

Hope it helps!


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Inaki Ayucar
Software Developer (Senior)
Spain Spain
Inaki Ayucar is a Microsoft MVP in DirectX/XNA, and a software engineer involved in development since his first Spectrum 48k, in the year 1987. He is the founder and chief developer of The Simax Project ( and is very interested in DirectX/XNA, physics, game development, simulation, C++ and C#.

His blog is:

To contact Inaki:

You may also be interested in...

Comments and Discussions

SuggestionBloated Pin
jaredbroad10-Nov-12 22:47
memberjaredbroad10-Nov-12 22:47 
GeneralRe: Bloated Pin
edureis4-Jul-13 10:45
memberedureis4-Jul-13 10:45 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.151125.1 | Last Updated 16 Jan 2012
Article Copyright 2012 by Inaki Ayucar
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid