Android模拟器的ip获取以及模拟器之间socket通信

2023-11-19

作者:李波

 

实现网络五子棋时用到了两个设备间的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上,运行一个用于数据中继的后台程序,进行数据的转发。



FROM: http://blog.csdn.net/yinyhy/article/details/10965529



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android模拟器的ip获取以及模拟器之间socket通信 的相关文章

随机推荐

  • 节点主动可信监控机制

    节点主动监控机制一般是通过调用在操作系统 虚拟机监视器 VMM 底层函数和中间件中的钩子函数来实现对上层行为的监控 监控过程过程可抽象为可信度量 可信决策 可信控制 同时 对系统中已有的安全机制 可信软件也可以通过策略输出和审计接入将它们纳
  • vue3变化+vue3项目的创建

    VUE3新特性 createApp 在 Vue 3 中 改变全局 Vue 行为的 API 现在被移动到了由新的createApp方法所创建的应用实例上 vue3 0中使用createApp 来创建vue实例 import createApp
  • 1-PointNetGPD论文阅读

    资源相关 1 项目地址 https lianghongzhuo github io PointNetGPD 2 源码地址 https github com lianghongzhuo PointNetGPD 3 论文地址 https arx
  • gdb调试心得体会

    gdb调试心得体会 首先进入gdb 调试二进制程序 gdb msgsvr dev 然后 运行 run 然后coredump了 输入bt查看调用栈 bt 然后查看函数栈 f 进入到指定的函数 然后查看具体行数 l number 然后break
  • Conditional Prompt Learning for Vision-Language Models

    本文是对CoOp方法提出的改进 CoOp由论文Learning to Prompt for Vision Language Models提出 CoOp针对CLIP模型做了改进 将人工设计的提示修改为了可学习的参数 具体来说就是 CoOp不再
  • Visual Studio 2022 CMake C++ Hello World

    C 自学精简教程 目录 必读 Visual Studio 2022 安装 什么是CMake CMake是跨平台的C C 工程构建工具 我们知道 在Windows上用Visual Studio开发C C 代码 工程文件是用 vcxproj文件
  • chatgpt赋能Python-python_3__3

    Python 3 3 深入探讨Python中的相等运算符 在Python中 我们经常需要比较两个值是否相等 而Python的相等运算符 是用来判断两个值是否相等 在这篇文章中 我们将深入探讨Python中的 运算符 两个等号的作用 在Pyt
  • Maven 项目打包源文件 *-sources.jar

    在 pom xml 配置文件中添加以下插件
  • 瑞数信息联合中国信通院发布《云上WAAP发展洞察报告(2023)》

    8月25日 由中国信息通信研究院 以下简称 中国信通院 和中国通信标准化协会联合主办的 2023云和软件安全大会 在北京召开 会上 瑞数信息与中国信通院云计算与大数据研究所联合撰写的 云上WAAP发展洞察报告 2023 以下简称 报告 正式
  • 区块链能够解决价值对等问题吗?

    如果说互联网让信息透明和平等 降低或者使得获取信息成本为零 那么区块链则是让价值更公平 原因在于区块链技术的去中心化与分布式数据存储 一般来说 商业进化需经历三个阶段 由PC互联网 移动互联网所控制的信息互联网 称为第一阶段 由物联网 人工
  • Lottie动画概述,文末有彩蛋

    原生的动画效果有时候写起来会非常的复杂 要考虑到很多兼容和效果 Lottie动画专门为了解决这种烦恼而产生的 注 不仅是Lottie可以做到 另外一种库也可以做到将动画分成一帧一帧展示 它就是 android gif drawable 库
  • Dynamics 365 Business Process Flow -- 让你不再惧怕复杂的业务流程!

    Business Process Flow 并不是新功能 它最初是在Dynamics CRM 2013中被发布的 刚推出的时候 用户体验和开发体验并不是非常的完善 随着版本的不断迭代 新功能也不断的被增加 特别是在最近发布的Dynamics
  • AIX系统解压tar.gz文件

    gunzip c apache tar gz tar xvf
  • C++ 如何将一个大的整数 拆分0到9单个数字

    如何将一个大的整数拆分成单个整数 第一种解决方案 第二种解决方案 分享思路 希望能帮到你 第一种解决方案 纯算法的方式 完整数 int value 123456 拆分后的个位数 int sub 拆分 while value 得到当前整数 尾
  • ORB-SLAM3---imu相关

    1 IMU简介及参数说明 2 预积分推导 纸老虎 1 反对称矩阵 2 反对称矩阵反过来 3 旋转向量到旋转矩阵 上面是积分 下面是预积分 3 噪声分离
  • 【超详细!】Snort在Win-7下的安装配置及可视化

    做学校实验做到秃头的产物 记录一下我一边考试一边实验的疯狂期末周 前排提示本人是个看到修改一大堆配置就头疼的菜狗 所以这篇教程尽可能减少了修改配置 包含了本人遇到的坑 解决方案 我尽力了朋友们 一 前期资源准备 1 win 7环境虚拟机 这
  • JavaScript常见调试方法

    编辑导语 javascript调试方法 常见使用alert和console来定位出错和输出的结果是否是想要的 在chrome中 还可以使用断点来看运行的情况等 本文介绍了比较全面的调试方法 你知道console table console
  • 虚函数与纯虚函数定义及区别,抽象类

    目录 虚函数和纯虚函数的区别 二 虚函数的实现机制 三 构造函数 析构函数是否需要定义成虚函数 四 构造函数和析构函数中能否调用虚函数 虚函数与纯虚函数定义 一 定义虚函数 被 virtual 关键字修饰的成员函数 纯虚函数 在类中声明虚函
  • vant4 自定义垂直步骤条时间线组件几行css代码改造完成(附效果图)

    直接上效果图片
  • Android模拟器的ip获取以及模拟器之间socket通信

    作者 李波 实现网络五子棋时用到了两个设备间的Socket通信 如果使用真机调试比较麻烦 用两个模拟器之间进行通信会比较方便 首先要获得的模拟器的IP地址 在本机上启动两个模拟器 emulator 5554 emulator 5556查看模