2017-05-04 10 views
1

私が読んできたすべてのチュートリアルJavaソケットプログラミングについては、localhostという共通の必須単語が1つ含まれています。私はしばらくの間、Javaサーバ - クライアントのプログラムで遊んできた、少しの実験をした。しかし、いつも、私のコンピュータはサーバとクライアントの両方だったので、自分のコンピュータでホストされているサーバに接続しようとする他のコンピュータに関しては、どうやって動作させるか分かりませんでした。Javaソケットプログラミング

例えば、以下の基本的なサーバ・クライアントクラスを取る:

サーバークラス

public class TestServerSocket { 

    public static void main(String args[]) throws IOException { 
     final int portNumber = 444; 
     System.out.println("Creating server socket on port " + portNumber); 
     ServerSocket serverSocket = new ServerSocket(portNumber); 

     while (true) { 
      Socket socket = serverSocket.accept(); 
      OutputStream os = socket.getOutputStream(); 
      PrintWriter pw = new PrintWriter(os, true); 
      BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); 

      //...code... 
     } 
      socket.close(); 
      pw.close(); 
      os.close(); 
      br.close(); 
    } 
} 

クライアントクラス

public class TestClientSocket { 

    public static void main(String args[]) throws IOException { 
     final String host = "localhost"; 
     final int portNumber = 444; 
     System.out.println("Creating socket to '" + host + "' on port " + portNumber); 

     while (true) { 
      Socket socket = new Socket(host, portNumber); 
      BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
      PrintWriter out = new PrintWriter(socket.getOutputStream(), true); 
      BufferedReader userInputBR = new BufferedReader(new InputStreamReader(System.in)); 

      //...code... 

     } 
      socket.close(); 
      out.close(); 
      br.close(); 
      userInputBR.close(); 
    } 
} 

、私は上のTestServerSocketを実行したいと言います私のコンピュータは、私の友人が彼のTestClientSocketを実行している。このコードが動作するためには、このコードにどのような変更を加える必要がありますか?

+0

https://superuser.com/questions/321734/how-does-localhost-127-0-0-1-workは何かを読んでください。 –

答えて

4

は「localhost」は、基本的にサーバーにフックアップするためにあなたの友人のためにあなたのループバックIPアドレス127.0.0.1

の別名で、コードは「ローカルホスト」の代わりにサーバーのIPアドレスを持っている必要があります。

あなたのローカルネットワークに友人がいない場合は、アウトバウンドIPアドレスを使用して、ルーターの適切なポートを転送する必要があります。あなたがこのタイプのネットワーキングに精通していなければ、私はそれを試みません。慎重でなくても慎重であっても、無数のネットワークベースの攻撃に対して自分自身を開くことができます。

+0

私には "あなたの友人があなたのローカルネットワーク上にない場合は、この例のためにちょっとだけ精巧にしてください。 –

関連する問題