2016-12-19 15 views
0

「完全IP」は、グローバルIP(静的)+ローカルIP(ローカルネットワーク内のアドレス192.168.0.xxx)を意味します。 java.net.ServerSocketjava.net.Socketを使って単純なサーバーとクライアントアプリケーションを作成しました。 localhost上でうまく動作しています。しかし、私は自分のローカルネットワーク(ルーター)のコンピュータ上のサーバーアプリケーションを実行し、クライアントアプリケーションを使用してどこからでも接続することに興味があります。次のように 接続が確立されていますローカルサーバーに完全なIPアドレスを指定する方法は?

Socket socket = new Socket(IP, PORT); 

それがすべて働いていないルータのIP +ローカルIP(192.168.0.100)、私は私の絶対的な静的IPを試してみました(が、それは、ルータのIPです)。 ルータのローカルネットワークで自分の「サーバー」へのフルパスを指定するにはどうすればよいですか?

+0

あなたはどのような問題に取り組んでいますか? 「働いていない」とはどういう意味ですか? – slambeth

+0

あなたのパブリックIPを取得してください:https://www.ipify.orgまたは他のwhatismyip検索サイト。ルータがローカルサーバにパケットを転送していることを確認してください。ローカルマシンでLinuxを実行している場合は、ルーター設定とファイアウォール/ iptablesのルールによるポート転送を設定する必要があります。 –

+0

@slambeth "not working"は私が例外を取得したことを意味します。 "有効でないIP"のようなもの –

答えて

1

私はあなたがIPアドレスを誤解していると思います。

すべてのIPアドレスは単なるIPアドレスです。ファイルシステムに相対パスがあるような、「相対的な」IPアドレスはありません。

たとえば、136.23.75.30という外部から見えるルータIPがあるとします。ローカルサブネット192.168.x.yがあります。ここでは、自分のホストのアドレスは192.168.1.100、ルーターのアドレスは192.168.1.1です。

その場合、サブネット内からホストに接続するときに、サブネット上のホストのアドレス192.168.1.100を指定できます。

ただし、インターネットから大規模に接続する場合、接続できる唯一のIPは、ISPから提供されたルーターの外部IPです。この例では136.23.75.30です。自分自身のサブネット外の任意の場所から192.168.1.100に接続しようとすると、ホストが間違っていてもどこにも行きません。

どのようにして必要なものを達成できますか?シークレットはあなたのルータの設定にあります。ポート転送のためにルータを設定する必要があります。基本的には、ルータは特定のポート(8888と言う)で着信接続を受け取り、その接続をホスト(192,168.1.100)への接続に変換します(例えば、同じポート8888)。

外の世界は136.23.75.30に接続していると考えていますが、実際にはルータは192.168.1.100が応答していることを確認しています。

これはホームの設定であると仮定すると、ルータの管理画面にアクセスする必要があります。ブラウザのアドレスバーに「http://192.168.1.1」と入力してください。適切な認証(通常はルータの背面に印刷されています)を提供した後、何らかの高度な設定タブを見つけて、「ポート転送」を探す必要があります。ここでは、通常、ターゲットアドレス、192.168.1.100、およびソースとターゲットポートを入力します(両方とも8888としましょう)。

関連する問題