实现网络五子棋时用到了两个设备间的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主机相关推荐

  1. android模拟器与pc,模拟器与模拟之间用socket进行通信和获得模拟器ip地址程序

    一.PC电脑和Android模拟器访问及模拟器之间tcp/udp通信 http://orgcent.com/pc-android-emulator-socket/ Android系统默认只能通过IP( ...

  2. 如何实现Android两个模拟器之间的通信

    之前写模拟器和pc机通信没有遇到过多大问题,这两天想做一个把Socket通信的服务端和客户端都用Android模拟器实现,有点小麻烦,搜集一些资料,也试用很多方法,最后终于实现了模拟器之间的链接: 第 ...

  3. android studio api30 模拟器运行不了_iOS模拟器来了?但我们劝你不要轻易尝试

    对于许多智能手机用户,特别是手游玩家来说,在手机屏幕的方寸之间进行操作显然并非特别方便,而且在多年之前,由于手机配置不足,也导致了用PC来玩手游的需求不断涌现.彼时,BlueStacks及夜神等一众A ...

  4. Android Studio 启动模拟器出现“Timed out after 300seconds waiting for emulator to come online“解决方案

    Android Studio 启动模拟器出现"Timed out after 300seconds waiting for emulator to come online"解决方案 ...

  5. android调试更换模拟器,在模拟器上调试 Android 磨损

    在模拟器上调试 Android 磨损Debug Android Wear on an Emulator 06/21/2018 本文内容 这些文章介绍了如何在模拟器上调试 Xamarin 应用程序应用程 ...

  6. Android开发环境——模拟器AVD相关内容汇总

    Android开发环境将分为SDK相关内容.Eclipse ADT相关内容.模拟器AVD相关内容.调试器DDMS相关内容.日志LogCat相关内容.连接驱动ADB相关内容.内存泄露检测工具MAT相关内 ...

  7. android 开源fc模拟器_星标 4.5K!又一个跨端框架,腾讯开源内部跨端统一开发框架:Hippy...

    点击上方"Github中文社区",关注 看遍Github好玩的项目 大家好,我是Hub哥,每天带你学习(假装了解)一个牛逼,又很碉(沙雕),又不失节操的项目. 今天我在Github ...

  8. android webview 模拟器,android – WebView没有填满设备或模拟器的整个屏幕

    我正在开发一个 Android应用程序,它在启动时加载Web应用程序.为了达到我使用webview控件的目的.我希望我的webview能够全屏显示,以便为用户提供原生的感觉.我尝试了所有方法来全屏显示 ...

  9. 如何解决android studio的模拟器有密码的问题

    原文链接:https://jingyan.baidu.com/article/e4d08ffd6a95300fd2f60dcf.html ------------------------ 在使用And ...

最新文章

  1. 最全芯片产业报告出炉,计算、存储、模拟IC一文扫尽
  2. Winform让扫描枪听话,防止在有焦点的地方就扫码输入的尴尬
  3. 【实战】MPLS单域通信过程详解
  4. C#中双问号、双冒号等几个特殊关键字
  5. Leetcode--236. 二叉树的最近公共祖先(Java)
  6. java log4j基本配置及日志级别配置详解,java基础面试笔试题
  7. 【跃迁之路】【722天】程序员高效学习方法论探索系列(实验阶段479-2019.2.12)...
  8. 倾斜摄影 实景三维建模软件photoscan教程
  9. 常用 MIME 类型
  10. 一台显示器分成双屏_华硕显示器贴心相伴:云办公、云学习宅家无忧
  11. B站的热门视频要怎么同时批量下载保存到本地电脑中
  12. 我爱赚钱吧:你知道自己建网站可以赚钱吗?①
  13. java bidi_Java Bidi isRightToLeft()用法及代码示例
  14. 步进电机主要技术参数
  15. nexus 4/5/6/7/9/10 安卓5.1 LMY47D root教程
  16. [1108]小米5S TWRP刷面具、EdXposed
  17. 运行软件打不开,报“应用程序无法正常启动(0xc0150002)”的错误
  18. 前端开发——Ionic 3.0【爱创课堂专业前端培训】
  19. 为苏州企业解读高新技术企业八大申报模块
  20. Python综合评价模型(二)灰色关联度法

热门文章

  1. Week of 3.28
  2. Javascript 在循环中使用Promise对象
  3. 第三方资源下载路径集合
  4. ADC分类及主要技术指标
  5. 对学计算机学生礼仪,计算机学院举办“一学一做”之文明礼仪宣传月主题教育活动...
  6. electron-vue通过配置文件设置baseUrl
  7. 微信公共服务平台开发(.Net 的实现)13-------网页授权(下 :C#代码的实现 )
  8. Codeforces Round #840 (Div. 2) and Enigma 2022 - Cybros LNMIIT题解
  9. 【算法题解】Codeforces Round #817 (Div. 4)题解
  10. 【C语言】scanf函数报错