java模拟器ip_Android模拟器的ip获取以及模拟器之间socket通信
作者:李波
实现网络五子棋时用到了两个设备间的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 –s emulator-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模拟器(simulator)把它自己作为了localhost,也就是说,代码中使用localhost或者127.0.0.1来访问,都是访问模拟器自己!这是不行的!
如果你想在模拟器simulator上面访问你的电脑,那么就使用android内置的IP 10.0.2.2 吧,10.0.2.2 是模拟器设置的特定ip,是你的电脑的别名alias
记住,在模拟器上用10.0.2.2访问你的电脑本机。
详细请参考Android文档android-sdk-windows\docs\guide\developing\devices\emulator.html下的Emulator Networking
Network Address Description
10.0.2.1 Router/gateway address
10.0.2.2 Special alias to your host loopback interface (i.e., 127.0.0.1 on your development machine)
10.0.2.3 First DNS server
10.0.2.4 / 10.0.2.5 / 10.0.2.6 Optional second, third and fourth DNS server (if any)
10.0.2.15 The emulated device's own network/ethernet interface
127.0.0.1 The emulated device's own loopback interface
java模拟器ip_Android模拟器的ip获取以及模拟器之间socket通信相关推荐
- Android模拟器的ip获取以及模拟器之间socket通信
作者:李波 实现网络五子棋时用到了两个设备间的Socket通信,如果使用真机调试比较麻烦,用两个模拟器之间进行通信会比较方便. 首先要获得的模拟器的IP地址 在本机上启动两个模拟器,emulator- ...
- linux socket ip层配置,Linux下Socket通信(TCP实现)
近期在做的项目中,涉及到了进程间数据传输,系统的原本实现是通过管道,但是原有的实现中两个进程是在同一台机器,而且两个进程的关系为父子关系,而我们要做的是将其中一个进程移植到服务器上,因此两个进程要分开 ...
- java与C语言之间socket通信(java客户端 C服务端)
直接贴代码 服务端C代码 server.c #include <stdio.h> #include <sys/types.h> #include <sys/socket. ...
- 获取android模拟器的IP地址,Android模拟器的ip获取以及模拟器之间socket通讯
一.Android 获取本机Mac 地址方法:java 须要在AndroidManifest.xml文件中添加权限:android shell Java代码服务器 public String get ...
- JAVA基础知识之网络编程——-基于AIO的异步Socket通信
异步IO 下面摘子李刚的<疯狂JAVA讲义> 按照POSIX标准来划分IO,分为同步IO和异步IO.对于IO操作分为两步,1)程序发出IO请求. 2)完成实际的IO操作. 阻塞IO和非阻塞 ...
- 用纯Java代码根据IP获取windows和linux的MAC物理地址
一.环境介绍 1.最近在使用struts2和JSP开发web网页时,碰到一个问题,我需要在后台根据ip获取访问服务器的物理地址,然后进行其他业务处理,但是我发现我在后台没有对应的接口或函数能够满足我. ...
- 坦克大战--Java类型 ---- (3)实现socket通信
一.实现思路 使用socket通信的一些方法来实现socket通信,客户端和服务端两边需要约定好通信的接口Port(尽量选高的),客户端需要服务端的IP地址,以实现数据交流. 同时,客户端和服务端需要 ...
- 使用socket通信本地电脑与阿里云服务器报错connection time out及解决方案(java语言)
使用socket通信本地电脑与阿里云服务器报错connection time out及解决方案(java语言) 参考文章: (1)使用socket通信本地电脑与阿里云服务器报错connection t ...
- java模拟器ip_android模拟器与pc,模拟器与模拟之间用socket进行通信和获得模拟器ip地址程序...
在本机上启动两个模拟器,本机(PC)和模拟器的信息如下: 大家可以看到,两个模拟器的IP地址都是完全一样的,所以要实现两个模拟器之间的通信,使用模拟器的IP地址是办不到的. 获取模拟器名称: > ...
最新文章
- 从json到抽取关键词
- java从Object类型转换成double类型
- 【PAT乙级】1020 月饼 (25 分)
- C#中提示:System.Runtime.Serialization.SerializationException
- kaggle中安装lightgbm的gpu版本
- 阿里P7大牛亲自教你!BAT这种大厂履历意味着什么?积累总结
- 仲裁文件夹服务器,仲裁服务器是什么
- Linux工作笔记-ssh中-X属性的使用(Linux传界面)
- html里面注释浮动框,“浮动”注释与HTML / CSS / JavaScript /任何
- 基于bootstrap的时间选择插件daterangepicker以及汉化方法
- 问题2----网速问题?造成的ORA-01034和ORA-27101
- sql取整数_SQL 窗口函数
- 联想台式计算机 不启动u盘,联想电脑没有u盘启动项怎么办_联想电脑找不到u盘启动如何解决...
- 计算机大类专业分流问题,2019级计算机大类专业分流实施细则
- 百度地图api如何查询周边大学、商场等的个数?可实现翻页
- [深入研究4G/5G/6G专题-40]: URLLC-11-《3GPP URLLC相关协议、规范、技术原理深度解读》-5-5G Qos原理与架构: 切片、PDU会话、QosFlow、5QI、DRB
- 为何贩卖焦虑的文章如此受欢迎???
- Linux rpm 命令 【转】
- Android 12 Watchdog(1) 介绍与启动
- 【Python学习笔记】超详细Python快速入门教程(下)
热门文章
- 天数智芯亮相“2019 世界半导体大会”,宣布国内首款GPGPU芯片推出时间表
- 用mobilenet模型跑tensorflow CNN的样例:image_retrain.py和label_image.py
- Android Activity did not call finish() prior to onResume() completing
- BCD转换成bin格式
- Command line is too long. Shorten command line for XXXX.testXXX or also for JUnit defau......
- Spring Cloud Alibaba 视频教程分享
- Django 生成PDF(三)——关于RML
- 用python实现一元线性回归方法与区间估计
- C语言程序设计 | 程序编译与预处理
- 使用酷Q SDK开发QQ机器人