You may get client's host IP with
select sys_context('USERENV','IP_ADDRESS') from dual;
You may get client's port with
SELECT port FROM v$session where username = user;
To get connection port you should issue OS command (*nix) like
netstat -n | grep <client_ip>:<client_port>
tcp 0 0 192.168.1.1:1521 184.108.40.206:65432 ESTABLISHED
To run OS command (keeping in mind all possible security consequences) it is possible to write C, java code.
Port number could be defined in the tnsnames.ora. But also it could be defined is ezconnect string. So, port, in general, is dynamic value.
Port is listed in process list (as mentioned above) and in the Listener Log File (lsnrctl status). In the last case it will be like:
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<hostname>)(PORT=1521))) (log.xml)