Connecting Real device to Android emulator

梦想与她 提交于 2019-12-19 10:07:11

问题


I am developing a network app for Android and I'm still stuck on connecting my real Android device with an device-emulator running on my desktop computer.

I've created private network with a router, so the only ones connected to the network are my pc and my mobile phone, in order to avoid firewall/closed ports problems.

My PC ip is 192.168.1.100 and I'm trying to ping each other so I can sea reachability of each network node. Ping works fine from my PC (not the emulator console) to the phone.

The problem is that I want to ping the PC-emulator from my mobile phone, not the PC itself... For that, I use the emulator console... Should I use my computer IP or should I use another one? I've seen some ip's like "10.0.x.x" here http://developer.android.com/guide/developing/tools/emulator.html

But I guess those are for connecting two EMULATORS, right?

Besides, I've tried to connect them by socket, creating a redirection for the port via Emulator console, but still can't connect them.

Any clues? Thanks!!


回答1:


I tried the early solution I gave you and it didn't work. As you said maybe the reason is the redir command of the emulator console only redirects packets comming from the localhost.

So I searched for a simple proxy server and used it in the same machine to test it out.

http://www.java2s.com/Code/Java/Network-Protocol/Asimpleproxyserver.htm

With this I used the following configuration:

on the proxy:

String host = "localhost";
int remoteport = 3000;
int localport = 4000;

Then run the emulator instance:

  • Server socket listening on port 2000.
  • Open telnet instance and issue "redir add tcp:3000:2000"

And finally on the real device open a socket to the machine address on port 4000.

So the network map looks like:

Device <-> machine:4000 Proxy machine:3000 <-> :3000 Emulator :2000 -> Application

This worked for me using the same application on the device and emulator.




回答2:


I've reached the conclusion that emulator can only receives packets coming from the loopback (127.0.0.1), since when you issue "redir add tcp:port:newPort, it only redirects the first port (associated to the loopback) to the second port (associated to the "emulator virtual ip").

I've tried to create a bridge, which redirects all the packets coming to my pc to the IP 127.0.0.1, but still not works. Thus, I think the emulator has been developed only to communicate with other emulators...

I hope anyone that comes here contradicts me.




回答3:


You may be able to connect a real device with an emulator instance.

Did you tried setting a redirection on the emulated device and then connect the real device trough a java socket?

For example:

On the emulated device open a server socket listening on port 2000, then open a telnet connection and issue the command:

redir add tcp:4000:2000

Finally, open a socket on the real device to your machine address (192.168.1.100) on port 4000.



来源:https://stackoverflow.com/questions/3990565/connecting-real-device-to-android-emulator

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!