>>536
WAN越し直接通信がしたいからといっても、別にJava特有の難しさはないはず。

相手のグローバルIPアドレス(の特定ポート)にパケット投げた場合、
相手のプログラムがそれを受け取ってくれるかどうかが問題になる。
多くの場合はルータ越しに接続しているから、
グローバルIPアドレスが相手のローカルIPアドレスに正しく変換されるかどうかは相手のルータ設定次第。

サーバを中継するなら、相手からサーバに接続してくるだけなので、
コネクションが張れるかどうかの問題がない。