[Lazarus] How to find out the public IP in code?
Mark Morgan Lloyd
markMLl.lazarus at telemetry.co.uk
Sat Nov 7 13:07:47 CET 2015
Bo Berglund wrote:
> I would like to be able to find out the public IP address of the Pi in
> a Lazarus program.
> How can this be accomplished?
> It is either connected to a wired or WiFi network router.
> in my browser I can go to http://checkip.dyndns.com/ and it will print
> a message with my IP address.
> But how is this done in code?
Avoid relying on this in the general case: you can usually use 0.0.0.0
to represent "this host". The problem is that a machine might have
multiple physical Ethernet (or other) adapters, and in addition might
have aliases set up, and in the general case it's not easy to look at
the list of IP addresses and determine which one you want.
http://forum.lazarus.freepascal.org/index.php?topic=20556.0 looks like a
good starting point, although it's oriented towards Windows. If you're
really looking for "/the/" address then I think you might end up parsing
the routing table (left as an exercise :-) and finding which local IP
address talks to the default gateway... which itself gets messy since
there might be multiple prioritised gateways. And then there's IP6 to
consider.
Word of advise: don't try arithmetic operations on IP addresses, and in
particular don't speculate on "next hops" etc. based on what you know
about your local network.
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
More information about the Lazarus
mailing list