You've already got some good answers above. I'd just like to add some thoughts to your approach.
Since you say you want to remain portable, I make the assumption that you're not 100% sure of what will be your target computer(s) for your application. (With target computer I here mean the computer where your application is going to be executed.)
Remember that in the target computer(s), you may have more than one network card, each with potentially more than one IP address. Even if you think you may assume only one network card in the target computer(s), a card may have more than one address.
You will need to start with defining what you meen by "the IP address", primarily which IP address.
Then you'll have to think of how to behave when the computer has multiple IP addresses.
Everything went worng, just as foreseen.