一》一个socket只能用于收或者发吗?
一个socket既可以收也可以发,一般分别用收线程和发线程处理收发事件
二》两个android模拟器之间可以进行UDP通信吗?
同一台电脑上的两个android模拟器之间不可以进行UDP通信
分别位于两台电脑上的两个模拟器之间可以进行UDP通信
一台电脑的模拟器可以和C,Java编写的Socket端进行通信,无论这两个socket是否在同一台电脑上
三》模拟器进行UDP通信的地址配置问题(UDP通信可以发送出去数据,但是接收不到数据的原因,大多是因为地址没用重定向好)
首先,在程序运行之前打开模拟器,
然后进入电脑终端,Linux下的console,win下点击运行——》CMD即可,然后依次键入如下命令行
telnet localhost 5554 ;连接到模拟器端口5554,就是模拟器界面上的最左上角的emulator ****中****所代表的端口号,若出现提示telnet不是内部命令之类的,说明电 脑 没有装好这个软件,win7的一般有这个问题,xp没有这个问题,解决方案:问度娘
redir add <protocol>:<host-post>:<guest-port> ;模拟器自身有个IP地址,并且会自动将自身的IP地址重定向到本机地址,也就是说,程序运行之后,模拟器自动搭起了由模拟器-->本机电脑,这样一条数据流通路,所以,数据可以通过这条通路从本机电脑上发送出去;而接收数据时,我们需要这样一条通路:本机电脑--》模拟器,这条通路需要我们自己通过重定向获得,否则,数据发送到本机电脑上后,由于没有到模拟器的数据流通路,数据到不了模拟器。这条命令的意思是:在protocal协议下,将本机电脑的端口port重定向到我们模拟器的port上,这样,就建立起了本机电脑--》模拟器的数据通路,从而,数据可以先发到本机电脑,然后到达模拟器
比如:redir add udp:5000:5000 表示使用UDP协议,将本机电脑上的端口5000重定向到模拟器端口5000.这样就可以接收到数据了
最后,运行程序
PS:一定要注意两个socket之间发送和接收端口的对应关系