【发布时间】:2013-12-16 18:38:54
【问题描述】:
我正在我的开发机器上的服务器上运行,我试图用我的 android 平板电脑连接,但我收到了一个 ConnectionException,因为它连接失败。
我已经在我的开发机器上测试了确切的客户端代码(并且使用公共 IP 地址而不是“本地主机”)并且这有效。但是一旦我切换到在 Android 上进行测试,就没有这样的运气了。
注意:这类似于Why I get nothing back from node.js server on android 和Connecting 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