The problem is that a host could have lots of network interfaces, and an interface could be bound to more than one IP address. And to top that, not all IP addresses will be reachable from off the machine. Some could be virtual devices, and others could be private network IP addresses.
How do i know my local ip address which is currently reachable from outside network?
Recently my old Visual C++ (2005 or earlier) decided to upgrade itself to Visual C++ 2008, or whatever happened, and that has different features. I am having to re-make all my projects for Visual C++ 2008. I am currently doing this with my project ppp_vc, which is a simple image reader and outputter and editer, and it is very useful to me. (The -'_vc' means "Visual C", to distinguish it from stuff made with my old faithful Borland C++ 4.52, which I had to stop using when modern Windowses became incompatible with it.) So far, the Release version of ppp.exe runs OK, but the Debug version of ppp.exe fails with a MessageBox saying "The application has failed to start because its side-to-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more details."
What is sxstrace.exe, and how to call it? What is a side-to-side configuration? This needs to be sorted out, before I have to repeat this ordeal with my application makeobj, which is a very useful CGI 3D mesh-editor which I wrote. And ditto with several other applications which I wrote.
I was brought up on MS-DOS, where things were much simpler.
This difficulty became much worse today when my PC's Windows decided to upgrade itself from the web.
One thing that I did in my Borland C++ days was to make the .JPG graphics software into a DLL, which was useful, until a way arose of calling JPG directly from the Windows software.