안드로이드 타블렛으로 연결하려고하는 개발 컴퓨터의 서버에서 실행 중이지만 연결에 실패했기 때문에 ConnectionException
이 표시됩니다.android에서 node.js 서버에 연결할 때 문제가 발생했습니다.
내 개발 컴퓨터에서 (그리고 'localhost'대신 공인 IP 주소를 사용하여) 정확한 클라이언트 코드를 테스트했으며 이것이 작동합니다. 하지만 일단 안드로이드에서 testiing로 전환하면, 그런 행운은 없습니다.
참고 : 이것은 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();
});
클라이언트 (자바)
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'는 방화벽을 통해 통신합니다. 내가해야 할 일이 있거나 실종 됐습니까?
가정용 네트워크에 있습니까? 와이파이? 라우터는 포트 포워딩을 허용합니까? – curtisk
회사 네트워크에서 포트 포워딩에 대해 잘 모름 – kburbach