`
jackchunyang
  • 浏览: 6157 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

PING!PING!PING!连接世界!

 
阅读更多

突发奇想,想看看安卓上能不能实现ping命令,一百度,已经有现成的程序了,但是没有代码。没代码就自己写咯,想想还是挺激动的呢。

         废话不多说,上图:



界面文件代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center|top"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.Jackhcunyang.pingtest.MainActivity" >

    <EditText
        android:id="@+id/editText"
        android:inputType="text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/buttonname" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"/>

</LinearLayout>

 我把ping命令的主要部分放在按钮监听器类里了,所以主Activity里并没有什么:下面是主Activity代码:

package com.Jackhcunyang.pingtest;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {
	TextView t;
	EditText e;
	public static String ACTIVITY_TAG = "PingTest";

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏标题
		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
				WindowManager.LayoutParams.FLAG_FULLSCREEN);// 设置全屏

		setContentView(R.layout.activity_main);
		TextView t = (TextView) this.findViewById(R.id.textView);
		this.t = t;
		Button b = (Button) this.findViewById(R.id.button);
		EditText e = (EditText) this.findViewById(R.id.editText);
		this.e = e;
		ButtonListener bl = new ButtonListener(this);
		b.setOnClickListener(bl);
	}

	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}
}

 

而后就是监听器代码了:

package com.Jackhcunyang.pingtest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;

/**
 * @author 春阳
 * 
 */
public class ButtonListener implements android.view.View.OnClickListener {
	private MainActivity m;

	private static Runtime run = Runtime.getRuntime();
	private static Process proc = null;
	private static String ss=null;
	Handler  mHandler = new Handler();
	public ButtonListener(MainActivity m) {
		this.m = m;
	}

	public void onClick(View v) {
		mHandler = new Handler() {
			   @Override
			   public void handleMessage(Message msg)
			   {
			    super.handleMessage(msg);
			    m.t.setText(ss);
			    m.t.invalidate();
			   }
			  };
		new Thread(new Runnable() {
			public void run() {
				BufferedReader br = null;
				String s = m.e.getText().toString();// 得到输入框的内容
				try {
					proc = run.exec("ping -c 4 -w 200 " + s);
					Log.i(MainActivity.ACTIVITY_TAG,"ping -c 4 -w 200 " + s);// 写入日志
					int status = proc.waitFor();
					System.out.println(status);
					proc.getInputStream();
					if (status == 0) {
						s = "连接成功";
						Log.i(MainActivity.ACTIVITY_TAG,s);
					} else {
						s = "连接失败";
						Log.i(MainActivity.ACTIVITY_TAG,s);
					}
					br = new BufferedReader(new InputStreamReader(
							proc.getInputStream()));
					String line = null;
					StringBuilder sb = new StringBuilder();
					while ((line = br.readLine()) != null) {
						sb.append(line + "\n");
					}
					System.out.println(sb.toString());
					ss=s + "\r\n" + sb.toString();
					Log.i(MainActivity.ACTIVITY_TAG,ss);//日志
					mHandler.sendMessage(mHandler.obtainMessage());//传递信息让handler执行
				} catch (IOException | InterruptedException e) {
					System.out.println("IOException|InterruptedException");
				}
			}
		}).start();
		
	}
}

 
 
 

  • 大小: 25 KB
  • 大小: 152.4 KB
分享到:
评论

相关推荐

    ping的参数!ping的参数!

    ping的参数!ping的参数!ping的参数!ping的参数!ping的参数!ping的参数!ping的参数!

    java中ping命令ping工具类(循环ping)

    PING (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序。Ping发送一个ICMP(Internet Control Messages Protocol)即因特网信报控制协议;回声请求消息给目的地并报告是否收到所 希望的ICMP echo...

    Windows防火墙开启ping,禁ping的配置方法

    Windows防火墙开启ping,禁ping的配置方法 当我通过本机Ping另一台在同一局域网内(即在同一网段)的... 右击选择启用规则,并在其属性里设置为‘允许连接'--&gt; 确定 --&gt; 大功告成。 要禁止ping,去掉勾选即可.

    C# PING小工具(除了科来ping就是这个了)

    还有连接失败的错误率。 可选中列表,使用CTRL + C 键复制ping的结果。 界面如下: 工具下载:http://files.cnblogs.com/zjfree/NetPing.rar 源码下载:...

    头歌ICMP Ping实现-Ping客户端创建原始套接字

    ICMP Ping实现-Ping客户端创建原始套接字ICMP Ping实现-Ping客户端创建原始套接字ICMP Ping实现-Ping客户端创建原始套接字ICMP Ping实现-Ping客户端创建原始套接字ICMP Ping实现-Ping客户端创建原始套接字ICMP Ping...

    ping.javascript

    js模拟ping命令!js模拟ping命令!j

    Ping命令大全及使用方法

    PING的一些参数: ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] destination-list -t Ping 指定的计算机直到...

    [易语言源码]-PING连接.

    [易语言源码]-PING连接.

    指定网口ping,指定速率ping,指定大小ping,指定次数ping

    指定网口ping,指定速率ping,指定大小ping,指定次数ping

    织梦ping插件 破解版

    Ping服务使用方法 你可以采取手动通知和自动通知两种方式使用ping服务: 手动ping:访问http://ping.baidu.com/ping.html页面,在输入框中输入博客地址或者feed地址,点击“提交博客”按钮即可。 自动ping:如果您...

    多线程ping

    这是一个多线程的ping命令,可以同时ping一段网络地址,属于异步ping!仅希望大家作为参考学习!

    指定网口ping,指定速率ping,指定大小ping,指定次数ping222

    指定网口ping,指定速率ping,指定大小ping,指定次数ping222

    http-ping工具

    -h header-line Pass the given header line as-is in each ping request. For example, add a host header like this: -h \"Host: www.site1.com\" Be sure to surround the header-line with quotes. You can ...

    PB最简单的ping

    已封装成NonVisualObject,即开即用,PB9测试通过。 if nettool.ping(em_1.Text) then MessageBox("Ping", "Ping failed!", Exclamation!) else MessageBox("Ping", "Ping succeeded!") end if

    LinuxC编写的ping命令

    LinuxC编写的ping命令LinuxC编写的ping命令LinuxC编写的ping命令LinuxC编写的ping命令LinuxC编写的ping命令LinuxC编写的ping命令LinuxC编写的ping命令LinuxC编写的ping命令LinuxC编写的ping命令LinuxC编写的ping命令...

    PingDude X:快速简便的ping测试!-开源

    简体中文:使用PingDude X,您可以轻松,快速地为世界各地的路由器和各种在线服务器测量Ping! 对于游戏玩家或故障定位的完美工具! 支持所有路由器制造商。 德语:使用PingDude X,您可以轻松,快速地测量路由器和...

    多任务多IP批量ping工具

    1,支持自动获取剪贴板数据省去了ctrl c、ctrl v(切到软件窗口直接回车等同按ping按钮) 2,支持置顶窗口 3,支持批量导入ip自动去除重复ip 4,支持单线程多线程切换(少于10个ip自动单线程) 5,支持ping D段ip 6...

    用java实现ping的几种方式

    用java实现ping的几种方式:纯Java实现ICMP的ping命令,JAVA调用外部EXE实现PING功能,ICMP Ping in Java(JDK 1.5 and above),最简单的办法,直接调用CMD

    Ping命令实现的扩充

    实验内容:Ping命令实现的扩充,在给定的Ping程序的基础上做如下功能扩充: ? -h 显示帮助信息 ? -b 允许ping一个广播地址,只用于IPv4 ? -t 设置ttl值,只用于IPv4 ? -q 安静模式。不显示每个收到的包的分析结果,...

    ip检测_批量_ping_C#实现ping功能_

    实现批量PING功能,不再调用cmd窗体,另启用窗体进行调用

Global site tag (gtag.js) - Google Analytics