The earlier anonymous post is correct, but I'd like to add a couple of things:
- Many boxes sit behind a NAT-enabled firewall. That means the box will have an IP address of 192.168.x.x or 10.x.x.x and will have no reliable means of determining its Internet IP address (if it even has one)
- A box admin can set its IP address to whatever they want as long as their local router is equipped to read it
- Boxes can have multiple network interfaces with different IP addresses. How would you determine which is the real one?
- Even boxes directly hooked up to the Internet can spoof IP addresses
The only thing I can think of is to have your code "call home" to a server of yours. Then you would (probably) know the real IP address it was coming from and could respond by returning a cryptographic key of some sort. This key would then be used to "unlock" the remainder of your code. However, as my anonymous colleague mentioned, this relies on your code staying obfuscated, which is, well, difficult. This is because otherwise, even if you used such a scheme, the customer could modify the code to store the key and then share it among multiple installations.
IP address checking may be appropriate if you are providing some service via the Internet, which your software, installed on customer sites, needs to invoke. But unless you're planning to establish some communication, you may have to rely on compiled code.