ping android模拟器,Android模拟器之间的网络通信及Ping主机
实现网络五子棋时用到了两个设备间的Socket通信,如果使用真机调试比较麻烦,用两个模拟器之间进行通信会比较方便。
首先要获得的模拟器的IP地址
在本机上启动两个模拟器,emulator-5554,emulator-5556查看模拟器ip
在命令行窗口输入命令
adb –s emulator-5554 shell
getprop
找到一下两行:
[net.eth0.dns1]: [10.0.2.3]
[net.gprs.local-ip]: [10.0.2.15]
可以发现两个模拟器的IP地址完全一样,都为10.0.2.15,DNS都为10.0.2.3,所以要实现两个模拟器之间的通信,使用模拟器的IP地址是办不到的。
模拟器提供了一个特殊的IP,这个IP地址为10.0.2.2,这个IP地址可以说等同于PC本机的IP地址127.0.0.1,所以,通过这个特殊的IP地址可以进行PC与模拟器之间的通信。
考虑模拟器作为主机的情况:
需要把模拟器的端口映射到PC的端口,通过连接PC端的端口来把请求重定向发送给,模拟器。
1)PC作为客户端,模拟器1为主机
2)模拟器2为客户端,模拟器1为主机
映射PC端口到模拟器端口的命令如下:
>adb –semulator-5554 forward tcp:6665 tcp:6666
映射成功后,连接模拟器的端口6666就要通过连接PC的端口6665进行连接,客户端连接的IP必须为环路IP,不能使用本机IP,如192.168.1.102,因为本机IP跟环路IP没有映射关系,所以发送到本机IP(192.168.1.102)的连接请求无法映射到127.0.0.1的环路IP上,使用PC端程序作为客户端时,环路IP必须使用127.0.0.1,使用模拟器作为客户端时,环路IP使用10.0.2.2,虽然两者是同一个环路IP,但是PC只能识别127.0.0.1,模拟器只能识别10.0.2.2。
3)如果要实现两个模拟器之间的相互通信,就必须每个模拟器都既为Server又为Client,并在PC机上映射为不同的端口。结构图如下
由于PC的本机IP(192.168.1.102)没有映射到环路IP,所以不能在Android真机与模拟器之间或者运行在两台PC的模拟器之间进行Socket通信,如果要实现连接,必须在作为服务器的PC上,运行一个用于数据中继的后台程序,进行数据的转发。
Android模拟器Ping主机
众所周之Android模拟器采用的是Qemu,而整个模拟的内核是Linux,虽然没有x-windows界面和bash shell,但测试下基本的Linux Shell还是没有问题的,今天就在android emulator上玩回ping。
首先我们进入cmd或console状态下,使用cd命令进入Android SDK的Tools命令,可以输入adb shell这时候,这个时候从>变为了#,现在已经在linux shell中了,虽然Android平台没有vi这样的编辑器,但是执行些简单的命令比如cd、rmdir、mkdir还是没有问题,我们直接在Android模拟器中测试ping本机,如# ping localhost,看看返回如图:
获取android模拟器ip
public String getLocalIpAddress() { try { for (Enumeration en =NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface intf = en.nextElement(); for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress().toString(); } } } } catch (SocketException ex) { edit_show.append(ex.toString()+"\n"); } return null; }
ping android模拟器,Android模拟器之间的网络通信及Ping主机相关推荐
- android模拟器与pc,模拟器与模拟之间用socket进行通信和获得模拟器ip地址程序
一.PC电脑和Android模拟器访问及模拟器之间tcp/udp通信 http://orgcent.com/pc-android-emulator-socket/ Android系统默认只能通过IP( ...
- 如何实现Android两个模拟器之间的通信
之前写模拟器和pc机通信没有遇到过多大问题,这两天想做一个把Socket通信的服务端和客户端都用Android模拟器实现,有点小麻烦,搜集一些资料,也试用很多方法,最后终于实现了模拟器之间的链接: 第 ...
- android studio api30 模拟器运行不了_iOS模拟器来了?但我们劝你不要轻易尝试
对于许多智能手机用户,特别是手游玩家来说,在手机屏幕的方寸之间进行操作显然并非特别方便,而且在多年之前,由于手机配置不足,也导致了用PC来玩手游的需求不断涌现.彼时,BlueStacks及夜神等一众A ...
- Android Studio 启动模拟器出现“Timed out after 300seconds waiting for emulator to come online“解决方案
Android Studio 启动模拟器出现"Timed out after 300seconds waiting for emulator to come online"解决方案 ...
- android调试更换模拟器,在模拟器上调试 Android 磨损
在模拟器上调试 Android 磨损Debug Android Wear on an Emulator 06/21/2018 本文内容 这些文章介绍了如何在模拟器上调试 Xamarin 应用程序应用程 ...
- Android开发环境——模拟器AVD相关内容汇总
Android开发环境将分为SDK相关内容.Eclipse ADT相关内容.模拟器AVD相关内容.调试器DDMS相关内容.日志LogCat相关内容.连接驱动ADB相关内容.内存泄露检测工具MAT相关内 ...
- android 开源fc模拟器_星标 4.5K!又一个跨端框架,腾讯开源内部跨端统一开发框架:Hippy...
点击上方"Github中文社区",关注 看遍Github好玩的项目 大家好,我是Hub哥,每天带你学习(假装了解)一个牛逼,又很碉(沙雕),又不失节操的项目. 今天我在Github ...
- android webview 模拟器,android – WebView没有填满设备或模拟器的整个屏幕
我正在开发一个 Android应用程序,它在启动时加载Web应用程序.为了达到我使用webview控件的目的.我希望我的webview能够全屏显示,以便为用户提供原生的感觉.我尝试了所有方法来全屏显示 ...
- 如何解决android studio的模拟器有密码的问题
原文链接:https://jingyan.baidu.com/article/e4d08ffd6a95300fd2f60dcf.html ------------------------ 在使用And ...
最新文章
- 最全芯片产业报告出炉,计算、存储、模拟IC一文扫尽
- Winform让扫描枪听话,防止在有焦点的地方就扫码输入的尴尬
- 【实战】MPLS单域通信过程详解
- C#中双问号、双冒号等几个特殊关键字
- Leetcode--236. 二叉树的最近公共祖先(Java)
- java log4j基本配置及日志级别配置详解,java基础面试笔试题
- 【跃迁之路】【722天】程序员高效学习方法论探索系列(实验阶段479-2019.2.12)...
- 倾斜摄影 实景三维建模软件photoscan教程
- 常用 MIME 类型
- 一台显示器分成双屏_华硕显示器贴心相伴:云办公、云学习宅家无忧
- B站的热门视频要怎么同时批量下载保存到本地电脑中
- 我爱赚钱吧:你知道自己建网站可以赚钱吗?①
- java bidi_Java Bidi isRightToLeft()用法及代码示例
- 步进电机主要技术参数
- nexus 4/5/6/7/9/10 安卓5.1 LMY47D root教程
- [1108]小米5S TWRP刷面具、EdXposed
- 运行软件打不开,报“应用程序无法正常启动(0xc0150002)”的错误
- 前端开发——Ionic 3.0【爱创课堂专业前端培训】
- 为苏州企业解读高新技术企业八大申报模块
- Python综合评价模型(二)灰色关联度法
热门文章
- Week of 3.28
- Javascript 在循环中使用Promise对象
- 第三方资源下载路径集合
- ADC分类及主要技术指标
- 对学计算机学生礼仪,计算机学院举办“一学一做”之文明礼仪宣传月主题教育活动...
- electron-vue通过配置文件设置baseUrl
- 微信公共服务平台开发(.Net 的实现)13-------网页授权(下 :C#代码的实现 )
- Codeforces Round #840 (Div. 2) and Enigma 2022 - Cybros LNMIIT题解
- 【算法题解】Codeforces Round #817 (Div. 4)题解
- 【C语言】scanf函数报错