IP addresses do not point to ports or applications. They point to (virtual) machines, or containers, or contexts.
An application listens on a port, which can be (depending on what it passes to
bind) on either all IP addresses on the machine, or on one IP address. So the best thing to do would be to get your application to call bind with the correct IP. You can have two different programs listening on port 80 (for example) as long as they're listening on a different IP address. Many programs allow you to specify the IP to listen on, for sometimes using the syntax
10.0.0.1:1234 where 10.0.0.1 is the IP and 1234 the port. When you leave out the IP, they default to 0.0.0.0 which is all addresses on the machine.
If your application can't do that, you can—as goldilocks hinted—work around it using NAT. Basically, you have each app listen on a different port, say 8080 and 8081. Then you set up NAT rules to redirect port 80:
iptables -t nat -A PREROUTING -d 10.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 8080
iptables -t nat -A PREROUTING -d 10.0.0.2 -p tcp --dport 80 -j DNAT --to-destination 8081
You can add additional firewall rules block direct access to ports 8080 and 8081, of course.
You could also use ipvs to do this. Or a proxy server. There are probably several more ways.