The simplest way to communicate behind a firewall or in case of dynamic IP assignement is to use a servant instead of a server. The servant will watch a real server with in/1 operations to perform commands assigned to it. To attach the servant to a server with full Internet access use the server at BinProlog's home i.e. something like:
?-host('clement.info.umoncton.ca')=>port(9001)=>run_servant.
or your own server on the firewall, if you have an account on it.