Creating a socket is a question of the originating program opening a port number (that may as well be random) and instructing it to send a request to the listening port on the receiving program or computer. The receiving port number then hands off the connection to another port number there. If your program is behind a firwewall, then it cannot receive such a request. It can receive a request from a peer to create a socket to your program, but if your program is also behind a firewall, then the communication is layered on top of a system of protocolls that are not able to establish a connection in either direction.
I have never used Tunnel Clients. But there are low-level limits on what a client program can do if the firewall is an effective firewall. I'm guessing that most of you don't run the firewall in question. But if you can't change the behavior of the firewall, then you're limited to these push requests. A University usually doesn't let you configure their firewall, and the low-level process is as I wrote above, no matter what you layer on top of it. One of the two computers must be able to listen. And it can't if there isn't a tunnel to it implimented by the firewall. And a tunnel client program also cannot be listening unless it has a reserved port number with the firewall.
Dirk |