2014-09-03 4 views
0

Возьмите следующие основные программы:розетка Связь между отдельными Машинами

import java.io.*; 
import java.net.*; 

public class TestServer { 
    public static void main(String[] args) throws IOException { 
     ServerSocket listener = new ServerSocket(12345); 
     try { 
      while (true) { 
       Socket socket = listener.accept(); 
       try { 
        PrintWriter out = new PrintWriter(socket.getOutputStream(),true); 
        out.println(new java.util.Date().toString()); 
        out.close(); 
       } finally { 
        socket.close(); 
       } 
      } 
     } finally { 
      listener.close(); 
     } 
    } 
} 


public class TestClient { 
    public static void main(String[] args) { 
     try { 
      Socket socket = new Socket("0.0.0.0",12345); // Stack trace points to this line as the one with the error 
      BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
      System.out.println(in.readLine()); 
      in.close(); 
      socket.close(); 
     } catch (IOException e) { 
      System.err.println("IOException: " + e.getMessage()); 
     } 
    } 
} 

Программа TestServer ждет клиент для подключения к нему так, что он может передавать информацию, которая, в данном случае, текущая дата, для клиента. На моем домашнем компьютере в моей IDE (кстати, JCreator) я могу запустить как программу TestServer, так и программу TestClient на том же компьютере и получить желаемый результат. Проблема в том, что когда я запускаю программу TestClient на компьютере разных и пытаюсь подключиться к программе TestServer, я продолжаю получать сообщение IOException: Connection refused.

Есть ли способ заставить это работать?

+0

Неясно, из вашего вопроса, что вы изменили IP-адрес с «0.0.0.0» на номер удаленного компьютера –

ответ

1

Вы пытаетесь подключиться к серверу с неправильным IP-адресом (0.0.0.0).

Вам необходимо знать IP-адрес компьютера, на котором запущена серверная программа, и использовать его для создания экземпляра сокета в клиентской программе.

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

+0

Итак, каждый компьютер имеет свой собственный IP-адрес? – TNT

+0

Да, они делают TNT – NightSkyCode

+0

. Тогда почему метод 'getInetAddress()' класса 'ServerSocket' возвращает' 0.0.0.0/0.0.0.0'? – TNT

Смежные вопросы