【问题标题】:Interconnecting Emulator Instances Android互连模拟器实例 Android
【发布时间】:2010-06-15 06:32:12
【问题描述】:

我想通过 Android 中的 DatagramSocket 与两个模拟器通信。它们中的每一个都是 P2P 系统中的一个节点。因此,它们中的每一个都有一个服务器线程和客户端线程(根据 GUI 事件创建)。这就是我创建服务器的方式

public static final String SERVERIP = "10.0.2.15";
    //...
    run() {
                InetAddress serverAddr = InetAddress.getByName(SERVERIP);
                DatagramSocket socket = new DatagramSocket(SERVERPORT,serverAddr);
                while(true) {
                    byte[] buf = new byte[29];
                    DatagramPacket packet = new DatagramPacket(buf, buf.length);
                    socket.receive(packet);
                //... 
                }
     }

端口由用户在初始化应用程序时提供。 客户端部分(请求一些数据)

InetAddress serverAddr = InetAddress.getByName("10.0.2.2");
//...
Log.i("Requester", "Trying to connect to device port = "+target);
DatagramSocket socketJ = new DatagramSocket();
byte[] bufJ = Adaptor.createStringMsg(Adaptor.createJoingMsg(id, Location.getX(), Location.getY())).getBytes();             
DatagramPacket packetJ = new DatagramPacket(bufJ, bufJ.length, serverAddr, target);
Log.i("Requester", "Sending: '" + new String(bufJ) + "'");
socketJ.send(packetJ);
Log.i("Requester", "Done.");

一些附加信息。 Node1 (emulatorA) 在端口 8000 上有一个服务器,Node2 (emulatorB) 在端口 8001 上有一个服务器。“客户端部分”的目标端口被正确读取。尝试做的是这样设置重定向:

//emulatorA
redir add tcp:8000:8000
//emulatorB
redir add tcp:8001:8001

但是,我无法在这 2 个模拟器之间获得任何通信。据我了解,关于它的 android 教程应该像 redir add tcp:localhostPort:emulatorPort 这样工作。我坚持下去:/。任何人都可以指出我的错误或提供一些好的建议。作为记录,当我在单个设备上测试通信(客户端伪造其他节点)时,一切正常,所以我认为代码中没有错误。

顺便说一句,有人知道我怎样才能为这 2 个模拟器(logA、logB)获取 2 组日志吗?这对我有很大帮助。

@Fred Grott 是的,我已经通过 telnet 连接到每个模拟器。谢谢你的日志提示。

【问题讨论】:

  • 你在redir之前先做了一个telnet localhost consoleport吗?
  • 对于日志从模拟器中推/拉日志文件

标签: android communication emulation


【解决方案1】:

数据报套接字使用 UDP。您声明您设置的端口重定向是针对 TCP 的。如果你尝试:

redir add udp:localhostPort:emulatorPort

你可能会有更好的运气。 但是,如果您将实现更改为使用 Sockets 并通过流进行通信,也可以使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 2011-06-21
    • 1970-01-01
    • 2011-11-07
    • 2018-12-31
    相关资源
    最近更新 更多