如何修正安卓虚拟机收不到udp包的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何修正安卓虚拟机收不到udp包的问题相关的知识,希望对你有一定的参考价值。
参考技术A 前言
当我们做安卓开发时,大多数人还是习惯用虚拟机,毕竟真机巴拉来巴拉去的不如鼠标方便,尤其是调试一些功能模块时,比如socket udp , 下文说明如何用as+虚拟机调试 socket udp, 实测
如何搭建udp服务器和客户端不提了,简单的搭建随便找一个吧
首先我们的前提是 我们在pc上建立了一个UDP服务器,目的是通过这服务器给虚拟机发送一个udp包
但如何发送这个包呢?
如果想当然的这样做在server上给"127.0.0.1:9014"发送包,然后在虚拟机的9014端口接受包,你会发现无论发多少次,虚拟机什么都收不到。 原因是,你这个包并不是发给虚拟机了,而是发给了本地端口,
也许你会说,给虚拟机发应该用虚拟机的ip地址,好的,通过尝试我们发现给虚拟机的ip地址+9014端口,仍然无法收到。(我用工具查看的虚拟机ip地址是10.0.2.15)
正确步骤
1.把PC端口9014映射到虚拟机,意思就是当PC 9014端口收到udp包,它会转发给虚拟机相应的端口
使用windows程序telnet即可达到映射的目的,(注意Telnet在win10需要开启,可查找怎么开启这个程序)
打开cmd 输入如下命令连接到本地虚拟机
telnet localhost 5554
连接成功后他会提示你输入验证,并告诉你验证码在哪里
UDPwireshark能抓到包,程序接收不到的解决方法
参考链接:https://bbs.csdn.net/topics/391939255
通常情况下,如果wireshark能抓到UDP包,但是程序收不到程序,这种情况下如果wireshark抓包的同时用程序接收,如果这个时候程序能接收到的话,一般情况下都是UDP包的MAC地址出问题了。
如上述链接中所说,wireshark抓包时把网卡的混杂模式打开,所有数据包都能进来,但是程序接收一般不会设置网卡的混杂模式。
今天遇到的问题是,UDP的数据时我从FPGA发出来的UDP包,VLC无法接收播放,但是用wireshark抓包时VLC可以播放,找了很久,才发现是我FPGA发送UDP时的MAC地址出问题了。组播MAC地址是有规则的!!!
参考链接:https://blog.csdn.net/fanlu319/article/details/7855627
以上是关于如何修正安卓虚拟机收不到udp包的问题的主要内容,如果未能解决你的问题,请参考以下文章
安卓的虚拟机如何设置中文,我安装完成后虚拟机是英文 如何设置成中文。