2

この質問は非常に明白な質問のように思えますが、答えを見つけるのに 1 時間以上を費やしました。

まず、ホストして、誰かが接続するのを待ちます。次に、アプリケーションの別のインスタンスから、ソケットに接続しようとします。コンストラクターには、InetAddress、ポートを使用します。ポートは常に正しく、アドレスに「localhost」を使用するとすべてが機能します。ただし、自分の IP (Google で "what is my ip" から取得した IP) を入力すると、IOException が発生します。私はアプリケーションを他の人に送り、彼に私の IP を与えましたが、うまくいきませんでした。

アプリケーションの目的は、2 台のコンピューターを接続することです。それはJavaにあります。関連するコードは次のとおりです。

サーバ:

ServerSocket serverSocket = new ServerSocket(port);
Socket clientSocket = serverSocket.accept();

クライアント:

InetAddress a = InetAddress.getByName(ip);
Socket s = new Socket(a, port);

私はそれを乗り越えません。明らかに、int portString ipの値はテキスト フィールドから取得されます。

編集: 私のアプリケーションの目的は、2 つの非ローカル コンピューターを接続することです。

4

1 に答える 1

2

Greg Hewgillが述べたように、NATデバイス(ルーターなど)の背後にいる場合は、ポートフォワーディングを実行する必要があります。

基本的に、グーグルの「What is myIP」を使用して取得するパブリックIPアドレスはパブリックIPアドレスですが、複数のコンピューターが接続されたルーターを使用しているため、複数のコンピューターを1つのコンピューターにマップするプロトコルがあります。 NATと呼ばれるパブリックアドレス。

あなたがする必要があるのは、特定のポートで着信パケットを特定のコンピュータに転送するようにルーターに指示することです。

これを行う方法は、この記事http://www.wikihow.com/Port-Forwardで強調されています。

于 2012-09-16T21:33:36.000 に答える