2013-12-16 3 views
1

Я запускаю сервер на моей машине разработки, с которой я пытаюсь подключиться к своему планшету Android, но я получаю ConnectionException, потому что он не подключается.Не удается подключиться к серверу node.js от android

Я протестировал точный клиентский код на моей машине разработки (и используя общедоступный IP-адрес вместо «localhost»), и это работает. Но как только я переключусь на тестирование на Android, нет такой удачи.

Примечание: это похоже на проблемы в Why I get nothing back from node.js server on android и Connecting to a nodejs server via android and getting a timeout exception, но ни в результате полезные ответы.

SERVER (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(); 
}); 

Client (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' для связи через брандмауэр. Есть что-то еще, что мне нужно сделать, или я пропал?

+0

В домашней сети? Вай-фай? Маршрутизатор позволяет перенаправлять порт? – curtisk

+0

В сети компаний, не уверены в переадресации портов – kburbach

ответ

0

Либо одна из двух вещей сделали эту работу:

  1. Перезагружаем ОС после напуска Node.js через брандмауэр
  2. Допущение порт 7000 через брандмауэр, а затем перезапустить

Поэтому обязательно перезагрузитесь после изменения настроек брандмауэра (я должен был знать это ...) - это может решить вашу проблему.