gpt4 book ai didi

android - 代码在两种不同的网络类型上表现不同

转载 作者:太空狗 更新时间:2023-10-29 14:28:11 25 4
gpt4 key购买 nike

我有以下用于测试服务器连接的代码。
我有一个具有以太网和 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,它可以跨不同的平台工作。

最佳答案

抱歉用这个

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);
}

关于android - 代码在两种不同的网络类型上表现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9748829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com