我有以下用於測試服務器連接的代碼。
我有一個具有以太網以及Wi-Fi連接的設備。代碼在兩種不同的網絡類型上的行爲不同
當用戶將網絡從以太網切換到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我可以使用android瀏覽器ping到MyServer,但是從我的應用程序中我無法ping到我的服務器。
我是否需要在我的代碼中添加一些額外的東西以使其適用於WiFi和以太網?
我也試過與InetAddress.getByName("www.MyServer.com").isReachable(timeout)
但它也給了我相同的結果。
是否有任何可靠的方式在Android中實現ping,它將跨越不同的平臺。
嘗試以http://www.MyServer.com – 2012-03-17 09:33:31
我已經嘗試過,但相同的行爲。 – User7723337 2012-03-17 09:35:29
嘗試使用ConnectivityManager。 – Deucalion 2012-03-17 12:54:14