ソケットの質問です。

サーバープログラム
ServerSocket serverSocket = new ServerSocket(5000);
Socket socket = serverSocket.accept();
(以下省略)

のコードを走らせ,クライアントの接続を待っているところに
クライアントが外部から

String host = サーバープログラムの起動しているマシンのグローバルアドレス
Socket socket = new Socket( host,5000);
(以下省略)

を実行したらエラーが出てうまくつながりませんでした。
hostをローカルアドレスにしてローカル内で実行したらうまくいったんですが
グローバルから接続する場合はこのままだとつながらないんでしょうか?