开发者

Connecting Real device to Android emulator

开发者 https://www.devze.com 2023-01-21 08:07 出处:网络
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 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!!


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.


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.


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消