2012-03-17 17 views
3

私はサーバー接続をテストするために次のコードを持っています。
私はイーサネットとWi-Fi接続を備えたデバイスを持っています。コードは2つの異なるネットワークタイプで異なる動作をします

ユーザーがネットワークをEthernetからwifiまたはvise verseに切り替えると、サーバー接続のテストが行​​われ、新しいネットワークでサーバーに接続できるかどうかが確認されます。

私は次のコードしている

public class TestActivity extends Activity 
{ 
    Button test_btn = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     test_btn = (Button)findViewById(R.id.testButton); 
     test_btn.setOnClickListener(new OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       Log.d("TestApp", "onClick Starting Test"); 
       startTest(); 
      } 
     }); 
    } 

    void startTest() 
    { 
     ServerTestThread mServerTestThread = new ServerTestThread() 
     mServerTestThread.start(); 
    } 

    class ServerTestThread extends Thread 
    { 
     boolean result = false; 
     public void run() 
     { 
      boolean result = false; 
      HttpGet request = new HttpGet("www.MyServer.com"); 
      HttpParams httpParameters = new BasicHttpParams(); 
      HttpClient httpClient = new DefaultHttpClient(httpParameters); 

      try 
      { 
       HttpConnectionParams.setConnectionTimeout(httpParameters, 6000); 
       HttpConnectionParams.setSoTimeout(httpParameters, 6000); 
       HttpResponse response = httpClient.execute(request); 

       int status = response.getStatusLine().getStatusCode(); 
       if (status == HttpStatus.SC_OK) 
       { 
        result = true; 
       } 
      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
       result = false; 
      } 

      Log.d("TestApp", "Ping Result:"+result); 
     } 
    } 

} 

私はイーサネット接続を使用してインターネットに自分のデバイスを接続すると、このコードは私のデバイス上で正常に動作しますが、私は、イーサネットからのWI-FIに切り替えると、このコードは私に偽の結果を与えるが毎回。

wi-fiを使用すると、アンドロイドブラウザを使用してMyServerにpingできますが、アプリケーションからは私のサーバーにpingできません。

無線LANとイーサネットで動作させるためにコードに何か追加する必要がありますか?

私はInetAddress.getByName("www.MyServer.com").isReachable(timeout)でも試したことがありますが、同じ結果が得られます。

Androidで異なるプラットフォームで動作するpingを実装する信頼できる方法はありますか。

+0

httpで試してみてください。私はそれが、同じ動作を試してみました//www.MyServer.com –

+0

。 – User7723337

+0

ConnectivityManagerを使用してみます。 – Deucalion

答えて

1

申し訳ありません使用この1

class ServerTestThread extends Thread 
{ 
boolean result = false; 
public void run() 
{ 
    boolean result = false; 
    HttpGet request = new HttpGet("www.MyServer.com"); 
    HttpParams httpParameters = new BasicHttpParams(); 


    try 
    { 
     HttpConnectionParams.setConnectionTimeout(httpParameters, 6000); 
     HttpConnectionParams.setSoTimeout(httpParameters, 6000); 
     HttpClient httpClient = new DefaultHttpClient(httpParameters);///write this line below 
     HttpResponse response = httpClient.execute(request); 

     int status = response.getStatusLine().getStatusCode(); 
     if (status == HttpStatus.SC_OK) 
     { 
      result = true; 
     } 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
     result = false; 
    } 

    Log.d("TestApp", "Ping Result:"+result); 
} 

}

+0

私はそれを試しましたが、私は同じ動作をしています。上記の解決方法を使用して原因を説明してください。 – User7723337

関連する問題