私はサーバー接続をテストするために次のコードを持っています。
私はイーサネットと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を実装する信頼できる方法はありますか。
httpで試してみてください。私はそれが、同じ動作を試してみました//www.MyServer.com –
。 – User7723337
ConnectivityManagerを使用してみます。 – Deucalion