我有一个AsyncTask应该检查网络访问主机名.但是doInBackground()永远不会超时.有人有线索吗?
public class HostAvailabilityTask extends AsyncTask<String, Void, Boolean> {
private Main main;
public HostAvailabilityTask(Main main) {
this.main = main;
}
protected Boolean doInBackground(String... params) {
Main.Log("doInBackground() isHostAvailable():"+params[0]);
try {
return InetAddress.getByName(params[0]).isReachable(30);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
protected void onPostExecute(Boolean... result) {
Main.Log("onPostExecute()");
if(result[0] == false) {
main.setContentView(R.layout.splash);
return;
}
main.continueAfterHostCheck();
}
}
Run Code Online (Sandbox Code Playgroud) 我需要从我的android设备对主机进行icmp ping.我需要测量往返时间.我精通android和java,只是不知道要使用什么库.我该怎么做?是否有可能通过3G,Edge?
我尝试了下面的代码来检查我的手机是否连接到无线网络,当我想知道我的手机是否连接到网络时它运行良好,但它无法提供有关互联网访问的信息...类似于" Ping"任何网站.实际上我遵循了许多链接,但仍然没有答案,所以如果有人能提供帮助,我会非常感激.
提前致谢.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Toast t = new Toast(getApplicationContext());
if (isInternetOn()) {
// INTERNET IS AVAILABLE, DO STUFF..
Toast.makeText(ConnectivityTestActivity.this,"Network is Available", Toast.LENGTH_LONG).show();
}
else {
// NO INTERNET AVAILABLE, DO STUFF..
Toast.makeText(ConnectivityTestActivity.this,"No Network Available", Toast.LENGTH_LONG).show();
}
}
public final boolean isInternetOn() {
ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
// ARE WE CONNECTED TO THE NET
if ( connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED ||
connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED ) {
// …Run Code Online (Sandbox Code Playgroud) 我正在创建一个应用程序,它将实现"ping"命令的一些功能.问题是,我不知道在ANDROID中使用哪些库/库.有人有任何想法吗?
我访问了这些stackoverflow链接,但他们没有太大的帮助.
我正在尝试访问主机并拥有以下代码
if(!InetAddress.getByName(host).isReachable(TIMEOUT)){
throw new Exception("Host does not exist::"+ hostname);
}
Run Code Online (Sandbox Code Playgroud)
我可以从Windows ping主机名,并在其上执行tracert并返回所有数据包.但java抛出异常"Host is not exists ::";
从实现2000ms到5000ms的超时值.我也试过3000.我无法理解这个问题的原因是什么.我在网上研究过,有人说InetAddress.getByName(host).isReachable(time)不可靠,并且根据内部系统行事.
如果这是真的,最好的选择是什么.请建议.
我使用isReachable,但它不起作用,我使用了ConnectivityManager和getNetworkInfo; 实际上这只是为了检查我是否连接到互联网...
但问题是我想检查我是否可以访问互联网,所以我想ping网站以检查是否有回复.
我正在开发一个移动应用程序,我需要一些参数来实现算法,但我不知道如何测量 wifi 网络中的延迟。有人说使用ping,但我不知道如何实现。
这是我的第一个问题,我正在学习。谢谢你。
android ×6
ping ×3
connection ×2
java ×2
android-wifi ×1
asynchronous ×1
host ×1
icmp ×1
latency ×1
networking ×1
wifi ×1