【问题标题】:Trouble connecting to node.js server from android从 android 连接到 node.js 服务器时出现问题
【发布时间】:2013-12-16 18:38:54
【问题描述】:

我正在我的开发机器上的服务器上运行,我试图用我的 android 平板电脑连接,但我收到了一个 ConnectionException,因为它连接失败。

我已经在我的开发机器上测试了确切的客户端代码(并且使用公共 IP 地址而不是“本地主机”)并且这有效。但是一旦我切换到在 Android 上进行测试,就没有这样的运气了。

注意:这类似于Why I get nothing back from node.js server on androidConnecting to a nodejs server via android and getting a timeout exception 中的问题,但都没有得到有用的答案。

服务器 (Node.js)

var net = require('net');
var couchDB = require('./serverTest');
var async = require('async');

async.parallel([
function(callback) {
    console.log('first');

    couchDB.getMapData(function(data){
        var mapDataString = JSON.stringify(data);   
        callback(null, mapDataString);
    });
},
function(callback) {
    console.log('second');
    var server = net.createServer(function(c) { //'connection' listener
        console.log('server connected');

        c.on('end', function() {
            console.log('server disconnected');
        });

        callback(null, c);
    }).listen(7000, null);
}],
function(err, responses) {
    var socket = responses[1];
    var mapDataString = responses[0];
    console.log('writing data');
    socket.write(mapDataString);
    socket.end();
});

客户端 (Java)

public class NodeClientTest {
private static final String IP_ADDRESS = "142.169.196.74";
    public static void main(String[] args){

        String jsonString = null;
        Socket clientSocket = null;
        try{
            clientSocket = new Socket(IP_ADDRESS, 7000);

            byte[] buffer = IOUtils.toByteArray(clientSocket.getInputStream());
            jsonString = new String(buffer);
            System.out.print(jsonString);
        }
        catch(IOException e){
            e.printStackTrace();
        }
        finally{
            try{
                clientSocket.close();
            }
            catch(Exception e){//not initialized
                e.printStackTrace();
            }
        }
    }
}

我认为这可能与 Windows 防火墙有关,但我进入并允许“Node.js”通过防火墙进行通信。还有什么我需要做的,或者我错过了吗?

【问题讨论】:

  • 在家庭网络上?无线上网?路由器允许端口转发?
  • 在公司网络上,不确定端口转发

标签: javascript android node.js sockets windows-firewall


【解决方案1】:

两件事之一使这项工作:

  1. 让 Node.js 通过防火墙后重新启动操作系统
  2. 允许7000端口通过防火墙,然后重启

所以,请务必在更改防火墙设置后重新启动(我应该知道这一点...) - 它可以解决您的问题。

【讨论】:

    猜你喜欢
    • 2014-04-30
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    相关资源
    最近更新 更多