2017-03-06 23 views
0

WindowsファイアウォールでETIMEDOUTを(接続がタイムアウトになりました)このtutorialを使用することに基づいてMySQLへの私のアンドロイドエミュレータの代わりにデバッグ用のアンドロイドデバイス。これは、実際のデバイス上で実行されていることに注意してください/192.168.15.186(ポート80)への接続に失敗しました解決方法:失敗した接続:私はアンドロイドスタジオの接続をテストしようとしている

java.net.ConnectException: failed to connect to /192.168.15.186 (port 80): connect failed: ETIMEDOUT (Connection timed out)

:問題がある。しかし、それはになります。 localhostまたは127.0.0.1:80の場合はECONNREFUSEDという結果が返ってくるので、明らかに、これはデータベースがデバイスにないコンピュータ自体のコンピュータアドレスなので、これらの2つのIPまたは代替IPをテストすると時間が無駄になります。

エミュレータで10.0.2.2:80/login.phpをテストしました。本当の結果が返ってきて、ログインと接続が成功したことを示しています。

だから、おそらく接続がWindowsのファイアウォールを介してブロックされていると思いますが、それを変更する方法はわかりません。

LOGCAT

03-06 13:59:29.935 20951-20951/com.example.smdojt.mysqldemo W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed. 
03-06 14:01:30.744 20951-25612/com.example.smdojt.mysqldemo W/System.err: java.net.ConnectException: failed to connect to /192.168.15.186 (port 80): connect failed: ETIMEDOUT (Connection timed out) 
03-06 14:01:30.744 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at libcore.io.IoBridge.connect(IoBridge.java:124) 
03-06 14:01:30.744 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) 
03-06 14:01:30.744 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:513) 
03-06 14:01:30.744 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at java.net.Socket.connect(Socket.java:894) 
03-06 14:01:30.744 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at com.android.okhttp.internal.Platform.connectSocket(Platform.java:174) 
03-06 14:01:30.744 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at com.android.okhttp.Connection.connect(Connection.java:152) 
03-06 14:01:30.744 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:276) 
03-06 14:01:30.744 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:211) 
03-06 14:01:30.744 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:382) 
03-06 14:01:30.744 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:106) 
03-06 14:01:30.744 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at com.android.okhttp.internal.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:217) 
03-06 14:01:30.745 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at com.example.smdojt.mysqldemo.BackgroundWorker.doInBackground(BackgroundWorker.java:48) 
03-06 14:01:30.745 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at com.example.smdojt.mysqldemo.BackgroundWorker.doInBackground(BackgroundWorker.java:23) 
03-06 14:01:30.745 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at android.os.AsyncTask$2.call(AsyncTask.java:292) 
03-06 14:01:30.745 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
03-06 14:01:30.745 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
03-06 14:01:30.745 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
03-06 14:01:30.745 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
03-06 14:01:30.745 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at java.lang.Thread.run(Thread.java:818) 
03-06 14:01:30.745 20951-25612/com.example.smdojt.mysqldemo W/System.err: Caused by: android.system.ErrnoException: connect failed: ETIMEDOUT (Connection timed out) 
03-06 14:01:30.745 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at libcore.io.Posix.connect(Native Method) 
03-06 14:01:30.745 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111) 
03-06 14:01:30.745 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at libcore.io.IoBridge.connectErrno(IoBridge.java:137) 
03-06 14:01:30.745 20951-25612/com.example.smdojt.mysqldemo W/System.err:  at libcore.io.IoBridge.connect(IoBridge.java:122) 
03-06 14:01:30.745 20951-25612/com.example.smdojt.mysqldemo W/System.err: ... 18 more 
03-06 14:01:30.748 20951-20951/com.example.smdojt.mysqldemo D/wangcy9: setStatusIcon occur wrong theme! 
03-06 14:01:30.782 20951-20951/com.example.smdojt.mysqldemo D/ViewRootImpl: loadSystemProperties PersistDebugEvent: false RoDebugEvent: false 
03-06 14:02:30.313 20951-20951/com.example.smdojt.mysqldemo W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed. 

MAINACTIVITY.java

public class MainActivity extends AppCompatActivity { 
    EditText UsernameEt, PasswordEt; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     UsernameEt = (EditText) findViewById(R.id.etUserName); 
     PasswordEt = (EditText) findViewById(R.id.etPassword); 

    } 

    public void OnLogin(View view) 
    { 
     String username = UsernameEt.getText().toString(); 
     String password = PasswordEt.getText().toString(); 
     String type = "login"; 
     BackgroundWorker backgroundWorker = new BackgroundWorker(this); 
     backgroundWorker.execute(type, username, password); 
    } 

} 

BACKGROUNDWORKER.java

public class BackgroundWorker extends AsyncTask<String, Void, String> { 

    Context context; 
    AlertDialog alertDialog; 
    BackgroundWorker (Context ctx) 
    { 
     context = ctx; 
    } 

    @Override 
    protected String doInBackground(String... params) { 
     String type = params[0]; 
     String login_url = "http://192.168.15.186:80/login.php"; //declare want you want to connect with 

     if (type.equals("login")) 
     { 
      try { 
       String user_name = params[1]; 
       String password = params[2]; 

       URL url = new URL(login_url); 
       HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection(); //declare http connection class 
       httpURLConnection.setRequestMethod("POST"); 
       httpURLConnection.setDoOutput(true); 
       httpURLConnection.setDoInput(true); 
       OutputStream outputStream = httpURLConnection.getOutputStream(); 
       BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8")); 
       String post_data = URLEncoder.encode("user_name","UTF-8") + "=" +URLEncoder.encode(user_name, "UTF-8")+"&" 
         +URLEncoder.encode("password","UTF-8") + "=" +URLEncoder.encode(password, "UTF-8"); 
       bufferedWriter.write(post_data); 
       bufferedWriter.flush(); 
       bufferedWriter.close(); 
       outputStream.close(); 
       //below: read and get post respone 
       InputStream inputStream = httpURLConnection.getInputStream(); 
       BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1")); 
       String result=""; 
       String line=""; 

       while ((line = bufferedReader.readLine())!=null) 
       { 
        result += line; 
       } 
       bufferedReader.close(); 
       inputStream.close(); 
       httpURLConnection.disconnect(); 
       return result; 
      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } 
      //Clause for httpurlconnection 
      catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 

     return null; 
    } 

    @Override 
    protected void onPreExecute() { 
     alertDialog = new AlertDialog.Builder(context).create(); 
     alertDialog.setTitle("Login Status"); 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     alertDialog.setMessage(result); 
     alertDialog.show(); 
    } 

    @Override 
    protected void onProgressUpdate(Void... values) { 
     super.onProgressUpdate(values); 
    } 
} 
+0

あなたはモバイルウェブブラウザで 'http://192.168.15.186:80/login.php'を開こうとしましたか?モバイルからこのURLにアクセスできますか? –

+0

@VladMatvienko私の携帯電話はブラウザを内蔵していません。私はダウンロードしたブラウザにも試してみましたが、うまくいかないでしょう。私はまた、PCとデバイスのネットワーク接続を疑っています。彼らは同じネットワークに接続する必要がありますか? – SovietSenpai

+0

このURLにモバイルデバイスからアクセスできることを確認するまで、Androidプログラミングについては何もありません。はい、同じネットワークに接続する必要があります(間違いなく)。あるいは、これらのネットワーク間にルートがあるはずです。同じネットワーク接続でも、サーバ(PC)が '80'ポートで接続を受け入れる必要があるため、接続が保証されません。それは、私は同じネットワーク上のPCとデバイスをテストする必要があると述べた@ VladMatvienkoと –

答えて

0

私は、同じ問題のトンを持っていました私は私のPCをプライベートネットワークで発見できるようにして解決しました。 のステップは、あなたのPC検出できるようにする:それは私のために助け

Go to network settings. 
>Go to Manage known networks. 
>Choose your network. 
>Now turn on the PC discoverable feature. 

、私はそれはあなたを助けることを願っています。

+0

このスレッドに返信するのを忘れました。私はその方法であなたのために働いたが、私がやったやり方は、私たちのネットワーク管理者の援助を依頼し、彼は異なるローカルIPを持つが、同じDNSといくつかのネットワークプロトコルを持つ仮想ネットワークを作った同社は非常によく確保されています。 – SovietSenpai

+0

接続が成功し、アンドロイドアプリの登録機能がPHPでうまく機能しました。それから、私が覚えていることから、ネット管理者は自分のアプリからローカルサーバーへの接続を追跡していたので、ファイアウォールは本当に問題であり、最初から不要なIPをブロックし続けているようです。 – SovietSenpai

+0

したがって、コードは上記のチュートリアルのリンクと同じです。 – SovietSenpai

関連する問題