2017-01-30 6 views
2

私はアンドロイドスタジオで働いていて、成功していないサーバに接続しようとしています。クライアントがコンピュータに接続されたとき、このコード:Androidクライアントとサーバソケット

socket = null; 
        try 
        { 
         Log.e("client", "Attempting to connect to serverrrrrr."); 
         socket = new Socket(hostname, portnumber); 
         Log.e("client", "Connected ! "); 

ホスト名のようです:私はREALを配置する必要があるため private static final String hostname= "localhost"; private static final int portnumber=55555;

が、その後、私は、イムは、携帯電話からクライアントに接続しようとすると、それが機能していないことに気づきましたIPアドレスであり、ローカルホストのものではありません。そのため、私はこれを試しました:

private static final String hostname= "10.0.0.1"; 
private static final int portnumber=55555; 

上記と同じコードで、それは動作しませんでした。それはちょうど新しいソケットの行にとどまっている... とその前進していないのでsuccusfully接続されていません。私は何を間違えているのですか?

私はまた、コードのこの部分があります:<uses-permission android:name="android.permission.INTERNET"/>

を、私は「ポートフォワーディング」でした。他に何ができますか?

01-30 18:16:47.760 16158-16210/com.omer.tictactoemultiplayer W/System.err: java.net.ConnectException: failed to connect to /10.0.0.1 (port 55555): connect failed: ETIMEDOUT (Connection timed out) 

サーバコード: `パブリッククラスServerがスレッドを拡張{

private static final int portnumber = 55555; 

@Override 
public void run() { 

    ServerSocket serverSocket = null; 
    try { 
     Log.e("Server", "Server starting at port number: " + portnumber); 
     serverSocket = new ServerSocket(portnumber); 

     while(true) 
     { 
      // Client connecting. 
      Log.e("Server", "Waiting for clients to connect ..."); 
      Socket socket1 = serverSocket.accept(); 
      Log.e("Server", "Client one has connected."); 

      Socket socket2 = serverSocket.accept(); 
      Log.e("Server", "Client two has connected."); 
      //Send message to the server.1 

      BufferedWriter bw1 = new BufferedWriter(new OutputStreamWriter(socket1.getOutputStream())); 
      bw1.write("found"); 
      bw1.newLine(); 
      bw1.flush(); 

      BufferedWriter bw2 = new BufferedWriter(new OutputStreamWriter(socket2.getOutputStream())); 
      bw2.write("found"); 
      bw2.newLine(); 
      bw2.flush(); 

      new ServerThread(socket1,socket2).start(); 
     } 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 

} 

} `

+0

コメントは議論の対象外です。この会話は[チャットに移動]されています(http://chat.stackoverflow.com/rooms/138851/discussion-on-question-by-levi-omer-android-client-and-server-sockets)。 –

答えて

0

あなたは携帯電話からPCに接続しようとしている場合は、あなたがプライベート を変更する必要がありますstatic final String hostname = "localhost" for

プライベート静的最終文字列ホスト名= your-pc-ip

あなただけのPC上でとてもうまく走るJavaコードが行うことはありませんよりも、あなたのコンピュータのIPへのローカルホストからホストを変更した場合は、コマンドウィンドウでIPCONFIG、およびLinux

+0

私はこれを試しました。あなたが見る通り、私はそれを変更しました。 –

+0

サーバーはどこに実装されていますか?Windows?仮想マシン? –

+0

アンドロイドスタジオで。 –

0

でifconfigコマンドを使用してIPアドレスを見ることができますアンドロイド用。

それで、あなたはインターネットコードをスレッドまたはAsyncTaskに入れなければなりません。

これを行わないと、NetworkOnMainThreadExceptionがlogcatにはっきりと表示されます。

+0

男、それはもちろん別のスレッドです。あなたが見ることができるように、私はそれがローカルホストではなく、私のIPで動作すると言いました。それが一度働くならば、それはip問題を除いてすべて大丈夫です。理解していますか? –

+0

3分待ってから例外が見つかりました。私は編集しました。 –

関連する問題