handler信息传递

public class HandlerMessage extends Activity {
	private TextView mTextView;
	private Button mButtonOne, mButtonTwo;
	private int count = 0;
	private MyThreadHandle threadHandle;
	private Handler mHandleThree;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.handler_get_message);
		mTextView = (TextView) findViewById(R.id.handler_txt);

		mButtonOne = (Button) findViewById(R.id.handler_one_btn);
		mButtonTwo = (Button) findViewById(R.id.handler_two_btn);

		threadHandle = new MyThreadHandle();
		threadHandle.start();

<span style="white-space:pre">		</span>//按钮点击事件,点击一次发送一次消息
		mButtonOne.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {

				Message mage = Message.obtain();
				mage.arg1 = count++;
				threadHandle.handlerOne.sendMessage(mage);

			}
		});

		mButtonTwo.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Message mage = Message.obtain();
				mage.arg1 = count++;
				threadHandle.handlerTwo.sendMessage(mage);

			}
		});
<span style="white-space:pre">		</span>//接收与子线程关联发送过来的消息
		mHandleThree = new Handler(Looper.getMainLooper(), new Callback() {// 主线程looper

					@Override
					public boolean handleMessage(Message msg) {
						int arg1 = msg.arg1;

						mTextView.setText("子线程   消息" + arg1);
						return true;
					}
				});
	}

	public class MyThreadHandle extends Thread {
		public Handler handlerOne, handlerTwo;

		@Override
		public void run() {
			Looper.prepare();
<span style="white-space:pre">				</span><pre name="code" class="html"><span style="white-space:pre">			</span>//getMainLooper(),与主线程关联
handlerOne = new Handler(Looper.getMainLooper(), new Callback() {// 主线程looper@Overridepublic boolean handleMessage(Message msg) {int arg1 = msg.arg1;Log.e("tag", "消息" + arg1);mTextView.setText("主线程 消息" + arg1);return true;}});
 
<pre name="code" class="html"><span style="white-space:pre">			</span>//<span style="font-family: Arial, Helvetica, sans-serif;">myLooper()</span><span style="font-family: Arial, Helvetica, sans-serif;">,与子线程关联</span>
handlerTwo = new Handler(Looper.myLooper(), new Callback() { // 子线程looper@Overridepublic boolean handleMessage(Message msg) {int arg1 = msg.arg1;// 将子线程中的数据返回到主线程中显示Message mas = new Message();mas.arg1 = arg1;mHandleThree.sendMessage(mas);return true;}});Looper.loop();}}}
 

<think>好的,用户让我解释一下“arp -a”这个命令。首先,我得回想一下ARP协议的基础知识。ARP全称是地址解析协议,用于将IP地址转换为物理的MAC地址。那“arp -a”具体是做什么的呢?应该是在不同操作系统下查看ARP缓存表的命令吧。 接下来,我需要确认不同系统中的具体用法。比如在Windows和Linux/macOS下,命令的显示可能有所不同。记得Windows的ARP缓存条目有动态和静态之分,而Linux可能分类不同。需要区分清楚这两种情况,避免给用户错误的信息。 然后,用户可能的实际需求是什么?他们可能遇到了网络连接问题,想查看本地ARP缓存,确认IP和MAC的对应关系是否正确,或者排查ARP欺骗之类的安全问题。也有可能是在学习网络管理,需要了解常用命令。 要确保解释清晰,结构合理。先介绍命令的作用,再分系统说明输出格式,然后解释各个字段的含义,最后给出使用场景和示例。注意用中文,避免技术术语过于复杂,同时保持准确。 还要检查是否有遗漏点,比如动态和静态条目的区别,缓存时间的影响,以及可能相关的其他命令如arp -d或arp -s。不过用户只问了arp -a,所以可能不需要展开其他参数,但提到相关命令可以帮用户扩展知识。 最后,确保语言通俗易懂,步骤明确,示例具体,让用户能跟着操作并理解结果。可能需要提醒用户权限问题,比如在某些系统上是否需要管理员权限才能运行该命令。不过通常arp -a不需要特权,但其他arp命令可能需要,这里可以提到一下。 总结,回答的结构应该是:命令作用、不同系统的输出格式、字段解释、常见用途、示例,可能的安全或故障排查提示。确保覆盖这些点,用户就能全面了解arp -a的用途和用法了。</think>### 解释 `arp -a` 命令 `arp -a` 是一个用于查看本地 **ARP 缓存表** 的网络诊断命令,适用于 Windows、Linux 和 macOS 等操作系统。ARP(Address Resolution Protocol,地址解析协议)用于将 **IP 地址** 解析为对应的 **MAC 地址**,从而实现局域网内的设备通信。 --- #### 1. **命令作用** - **ARP 缓存表** 记录了近期与本机通信的设备的 `IP地址 ↔ MAC地址` 映射关系。 - 通过 `arp -a` 可以查看这些条目,帮助排查网络连接问题或识别异常设备。 --- #### 2. **输出格式(不同系统略有差异)** - **Windows 示例**: ```plaintext 接口: 192.168.1.10 --- 0x3 Internet 地址 物理地址 类型 192.168.1.1 00-11-22-aa-bb-cc 动态 192.168.1.255 ff-ff-ff-ff-ff-ff 静态 ``` - **类型**: - **动态**:自动学习并临时存储(一段时间未通信后自动删除)。 - **静态**:手动添加或系统保留的永久条目。 - **Linux/macOS 示例**: ```plaintext ? (192.168.1.1) at 00:11:22:aa:bb:cc [ether] on eth0 ? (192.168.1.255) at ff:ff:ff:ff:ff:ff [ether] PERM on eth0 ``` - `PERM` 表示静态条目,`ether` 表示以太网协议。 --- #### 3. **字段含义** - **Internet 地址**:目标设备的 IP 地址。 - **物理地址**:目标设备的 MAC 地址。 - **类型**:条目来源(动态/静态)。 - **接口**:本机的网络接口(如网卡名称或 IP)。 --- #### 4. **常见用途** - **排查网络故障**:确认目标设备的 IP-MAC 映射是否正确。 - **检测 ARP 欺骗**:检查是否存在重复的 MAC 地址或未知设备。 - **验证网络配置**:查看网关、DHCP 服务器等关键设备的条目。 --- #### 5. **操作示例** ```plaintext # Windows C:\> arp -a # Linux/macOS $ arp -a ``` --- #### 6. **相关命令** - `arp -d [IP]`:删除指定 ARP 缓存条目。 - `arp -s [IP] [MAC]`:手动添加静态 ARP 条目(需管理员权限)。 若需进一步排查网络问题,可结合 `ping` 或 `ipconfig/ifconfig` 使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值