Android 模拟器接受UDP/TCP数据报

本文介绍了解决Android模拟器中远程视频播放收不到数据包的问题。通过端口重定向技术,实现模拟器与局域网内设备的端对端通信,确保视频数据正常接收。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在使用模拟器调试远程视频播放的时候,遇到收不到数据包的情况, 最后我解决了, 希望这个可以给大家帮助:

 

应用场景:采用的select机制,但是select的返回值一直是0, 通过抓包工具发现,远程的server在一直发视频数据给客户端。问题就出在socket 收不到数据, 所以select检测不到fd上有数据。

 

 

解决办法: 端口的重定向:

 

为什么要做端口重定向呢?

开发的过程中遇到一个问题:android的模拟器有个很诡异的特点,就是访问网络的时候只可以从模拟器主动往出去连。但是却无法主的从外面连接模拟器,这个特点和NAT几乎完全一样,具有单向连接的特性。

实际开发中我们希望模拟器像一台独立的手机一样,能和处于同一局域网中的手机进行端对端的通信。这时就需要做端口重定向。

类似于给路由器做nat的端口重定向。下面几步:

>运行模拟器:你会发现模拟器标题栏上写着端口号:5554,其实这个端口号是模拟器的console端口

>telnet到模拟器的console口上:telnet localhost 5554

(如果你用的是win7. 默认是没有开启telnet功能的,开启的方法看这里http://hi.baidu.com/lzhts/blog/item/2442d162a0c618cfe6113ae2.html)

>在控制台下输入 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>的含义同上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值