为什么要做端口重定向呢?
开发的过程中遇到一个问题:Android的模拟器有个很诡异的特点,就是访问网络的时候只可以从模拟器主动往出去连。但是却无法主的从外面连接模拟器,这个特点和NAT几乎完全一样,具有单向连接的特性。
实际开发中我们希望模拟器像一台独立的手机一样,能和处于同一局域网中的手机进行端对端的通信。这时就需要做端口重定向。
类似于给路由器做nat的端口重定向。下面几步:
>运行模拟器:你会发现模拟器标题栏上写着端口号:5554,其实这个端口号是模拟器的console端口
>telnet到模拟器的console口上:telnet localhost 5554
(如果你用的是win7. 默认是没有开启telnet功能的,开启的方法看这里)
>在控制台下输入 redir add tcp:7778:9998 就完成了从主机7778端口重定向到模拟器9998端口的任务
redir的语法是:redir <list|add|del>
支持下表列出的子命令:
子命令
描述
注释
list
列出当前的端口重定向
(min 150, max 550)
add <protocol>:<host-port>:<guest-port>
添加新的端口重定向
<protocol> 必须是”tcp” 或 “udp”<host-port> 是主机上开启的端口号<guest-port> 是向模拟器/设备发送数据的端口号
del <protocol>:<host-port>
删除端口重定向
<protocol> and <host-port>的含义同上