2013-03-12 1 views
0

Я использую ноутбук как мой сервер и мобильное устройство в качестве моего клиента. Мне нужно отправлять сообщения между ними. Я могу это сделать, используя локальный IP-адрес ноутбука и подключая их как к той же сети Wi-Fi. Но как я использую ip-адрес, если мне нужно отправлять сообщения, хотя они подключены к другому интернету через различные Wi-Fi-сети. Это код в клиенте:Как подключить клиент и сервер с помощью ip-адреса, подключенного к Интернету через различные Wi-Fi?

client = new Socket("192.168.0.103", 4444); //local ip address of server 

Это код в сервере:

serverSocket = new ServerSocket(4444); //Server socket 
clientSocket = serverSocket.accept(); //accept the client connection 
inputStreamReader = new InputStreamReader(clientSocket.getInputStream()); 
bufferedReader = new BufferedReader(inputStreamReader); //get the client message 
String input=bufferedReader.readLine(); 

Могу ли я использовать шлюзы или статический или динамический IP-адрес, чтобы решить эту проблему? Если да, то как?

+0

Ваша проблема не в проблеме программирования. Ваши проблемы связаны с конфигурацией маршрутизатора. Когда вы находитесь в одной сети, вы можете использовать свой внутренний IP-адрес. Когда вы находитесь в разных сетях, вам нужно указать публичный IP-адрес обеих сетей. Я бы предложил вам переместить вопрос на ServerFault (http://serverfault.com/?as=1), где люди, более опытные в сетях, смогут помочь вам лучше. –

ответ

0

Вам необходимо настроить модем/маршрутизатор на стороне сервера, чтобы внешние вызовы (от клиента mobil) до порта 4444 были перенаправлены на правильное устройство в подсети.

Это изменение конфигурации, которое должно выполняться вручную на маршрутизаторе. Кроме того, не все маршрутизаторы поддерживают эту функцию перенаправления услуг (но большинство из них). Даже когда маршрутизатор поддерживает его, иногда бывает трудно найти правильный способ сделать это, потому что у него могут быть разные имена между моделями.

Обычно вы должны это делать, даже если к маршрутизатору подключено одно устройство.

В некоторых установках маршрутизатор и модель представляют собой два разных физических устройства, но вы также можете найти эти две функции, объединенные внутри одного устройства. Если у вас есть возможности подключения нескольких устройств к модему, то, скорее всего, ваш модем также предложит функциональность маршрутизации. Тем не менее, я помню, что в прошлом некоторые модемы, для которых невозможно было перенаправить внешние вызовы службы на конкретное устройство (или, по крайней мере, я лично никогда не нахожу, как это сделать для этих моделей).

Если ваша сеть имеет один маршрутизатор - как в большинстве домашних установок; то нет никакой реальной разницы между шлюзом и маршрутизатором. Однако, если ваш сервер находится в сложной локальной сети с несколькими маршрутизаторами, то может быть очень сложно правильно настроить всю сеть; особенно когда у вас установлены проверки безопасности.

Таким образом, вы должны либо обратиться к документации для вашего устройства подтверждения, если находитесь дома, либо попросить ответственного за сетевую сеть пользователя выполнить конфигурацию.