2015-07-02 2 views
2

У меня есть код сервера на Java, который я запускаю на своей машине, а мой друг имеет код клиента, который запускается на его машине. Когда он вводит мой IP-адрес, чтобы подключиться к моему серверу и получить дату, соединение терпит неудачу и ничего не происходит. Обратите внимание, что когда я запускаю серверные и клиентские программы на своем собственном компьютере и введите localhost в качестве адреса, соединение будет успешным, и я получаю сообщение о дате правильно. Я ищу возможные ошибки и проблемы, вызывающие это.Ошибка соединения сокета Java

Серверный код в Java:

import java.io.IOException; 
import java.io.PrintWriter; 
import java.net.ServerSocket; 
import java.net.Socket; 
import java.util.Date; 

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

Клиентский код в Java:

import javax.swing.*; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.Socket; 

public class Client { 
    public static void main(String[] args) throws IOException { 
     String serverAddress = JOptionPane.showInputDialog(
       "Enter IP Address of a machine that is\n" + 
         "running the date service on port 9999:"); 
     Socket s = new Socket(serverAddress, 9999); 
     BufferedReader input = 
       new BufferedReader(new InputStreamReader(s.getInputStream())); 
     String answer = input.readLine(); 
     JOptionPane.showMessageDialog(null, answer); 
     System.exit(0); 
    } 
} 
+2

Брандмауэр был бы моим первым предположением. (iptables/ufw/брандмауэр Windows) –

+0

@SeanBright Ну, оба наших брандмауэра отключены: -/ – Ratep

+0

@ Sepehr-Просьба предоставить stackTrace исключения, которое произошло! –

ответ

0

Некоторые маршрутизаторы могут изолировать компьютеры в разных сетях. Попробуйте использовать оба компьютера на Wi-Fi или оба подключены к маршрутизатору. Являются ли ваши IP-адреса в одной сети? Вы можете видеть компьютер своего друга в сети? На вашем маршрутизаторе могут быть некоторые конфигурации безопасности.

Помимо этого и проблемы с брандмауэром (который вы отключили), код выглядит так, как будто он должен работать нормально.

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