I'm writing a Bitcoin web app that is to be deployed on an external server over which I have no control. I probably won't have access to standard Bitcoin port (8333). Will this cause a problem when connecting to standard Bitcoin clients, or can they handle communicating with a non-standard port number? Are there any Bitcoin-related applications that also use other ports to communicate (like a pool or the like)?
Nodes on the network which are not running on the default ports (8333 for the main network, 18333 for testnet) will be avoided by the reference client in order to not cause disruption to other services. Otherwise should somebody advertise a fake node running on another applications port, other nodes in the network could cause a denial of service attack as they attempt to connect to it fruitlessly.
A code snippet from the Bitcoin Core client, showing that nodes will ignore non-standard ports unless they are very desperate to find somebody they can connect to:
// do not allow non-default ports, unless after 50 invalid addresses selected already if (addr.GetPort() != Params().GetDefaultPort() && nTries < 50) continue;
If you want to actively support the network with incoming connections you should not be changing the "port" setting of the bitcoin daemon if at all possible.
Beware that -addnode ignores -port setting
For example, both node1 and node2 have a -port=14444
node1> bitcoin-cli addnode node2 add
2018-08-11 02:07:04 connect() to node2:18444 failed after select(): Connection refused (111)
The fix is to include the port in the host name node1> bitcoin-cli addnode node2:14444 add