【问题标题】:Android emulator(client) to phone(server) socket connectionAndroid 模拟器(客户端)到电话(服务器)套接字连接
【发布时间】:2016-05-21 00:50:09
【问题描述】:

我目前正在尝试通过 TCP/IP 套接字连接来连接模拟器(客户端)和电话(服务器)。但不知何故它永远不会工作,但如果我尝试将模拟器(作为客户端/服务器)与内部java程序(作为客户端/服务器)连接起来,它工作正常,套接字连接也可以从电话到不在模拟器上的应用程序正常工作。我认为这与端口转发有关,所以我尝试了:

来自How can I forward my localhost IP-Address to an Android Emulator

telnet localhost 5554

redir add tcp:1337:12345

但是当我用端口号 1337 和服务器端 12345 测试我的客户端时,它仍然无法正常工作,服务器代码没有 .accept() 客户端的请求。

以下是我的客户端(模拟器)和服务器(电话)代码,用于接受和设置 io 流

客户:

SERVER_IP 是本地 ip 地址

connection = new Socket(SERVER_IP, PORT);

private void setUpStreams() throws IOException {
            output = new ObjectOutputStream(connection.getOutputStream());
            output.flush();
            input = new ObjectInputStream(connection.getInputStream());
        }

服务器:

这是为了接受用户 私人无效接受用户(){

        try {
            ss = new ServerSocket(PORT, 10);
            connection = ss.accept();
            connected = true;
            osm.updateInChatStatus(1);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            Log.i("serv", "Wasn't able to connect with any clients!: " + e);
        }
    }

并且设置流与客户端的设置非常相似。提前感谢您的建议和解决方案。

【问题讨论】:

  • 客户端和服务器都在同一个网络上吗?手机连接到Wifi了吗?
  • 是的,没错。它们连接在同一个网络上
  • 尝试交换,在模拟器上做服务器的事情,然后在手机上做客户端的事情,看看是否有效
  • @John - 交换不起作用,模拟器拒绝监听外部接口(至少在我上次检查时是这样)。

标签: java android sockets tcp


【解决方案1】:

访问网络连接需要在AndroidManifest.xml中设置权限

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bosch.adx.esidroid">
    <uses-permission android:name="android.permission.INTERNET" />
<application
--

【讨论】:

    猜你喜欢
    • 2014-06-04
    • 2013-12-05
    • 2014-05-21
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多