【问题标题】:Android client not connecting to server KryoNetAndroid 客户端未连接到服务器 KryoNet
【发布时间】:2017-03-04 20:24:55
【问题描述】:

我正在尝试从 Android 客户端(从我的手机)连接到服务器(我的 PC)。服务器和客户端都在使用 KryoNet。当我尝试从与服务器位于同一台 PC 上的客户端进行连接时,连接成功。当我尝试从连接到无线的 Android 手机(连接到与运行服务器的 PC 相同的路由器)连接时,连接也成功。当我在使用移动数据时尝试从手机连接时连接失败(它会出现超时错误)。我做了端口转发并从 Windows 防火墙设置中打开了端口。知道有什么问题吗?

客户端代码:

final Client client = new Client();     
        client.getKryo().register(StringRequest.class);
        final StringRequest request = new StringRequest();
        new Thread(client).start();

        System.out.println("Client started.");

        try {
            client.connect(5000, ipAddress, 54555);
            client.addListener(new Listener() {
                public void received(Connection connection, Object object) {
                    if (object instanceof StringRequest) {
                        StringRequest response = (StringRequest) object;
                        Gdx.app.log("Client",response.data);
                    }
                }
            });
        } catch (IOException e) {
            Gdx.app.log("Exception", e.getMessage());
            e.printStackTrace();
        }
        request.data = "Hello";
        client.sendTCP(request);

服务器代码:

Server server = new Server();
    Kryo kryo = server.getKryo();
    kryo.register(StringRequest.class);
    server.start();
    try {
        server.bind(54555);
    } catch (IOException e) {
        e.printStackTrace();
    }
    server.addListener(new Listener() {
        public void received (Connection connection, Object object) {
           if (object instanceof StringRequest) {
              StringRequest request = (StringRequest)object;
              System.out.println("Server"+request.data);
              StringRequest response = new StringRequest();
              response.data = "response";
              connection.sendTCP(response);
           }
        }
     });

【问题讨论】:

    标签: java android libgdx network-programming kryonet


    【解决方案1】:

    您的 Android 应用程序是否有 Internet 权限?

    <uses-permission android:name="android.permission.INTERNET" /> 
    

    需要通过网络进行通信。此外,请确保您尝试连接 PC 的外部 IP,而不是本地 IP (192.168.x.xxx)。你可以得到你的外部IPhere

    【讨论】:

    • 再次感谢。我使用的是本地 IP,这就是问题所在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多