Что не так с сервером?

Я написал чат, где есть клиент и сервер. И такое дело, когда запускаю сервер на своем компьютере, а затем клиент и мой друг тот же самый клиент запустил на своем компьютере, я могу подключиться к серверу, а друг не может. В чем дело? Вот код сервера
public class Server {

    private JFrame frame = new JFrame();
    private JTextArea dialogs = new JTextArea();
    private static Socket socket;
    private static ServerSocket serverSocket;
    private static ArrayList<PrintWriter> streams = new ArrayList();

    public static void main(String[] args) throws IOException {
        Server server = new Server();
    }

    public Server(){
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.setLayout(null);
        frame.setLocationRelativeTo(null);
        frame.setTitle("Server");
        frame.setSize(250, 350);

        dialogs.setEditable(false);
        dialogs.setLineWrap(true);
        dialogs.setWrapStyleWord(true);
        dialogs.setBounds(15, 15, 216, 240);
        DefaultCaret caret = (DefaultCaret)dialogs.getCaret();
        caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
        JScrollPane scrollPane = new JScrollPane(dialogs);
        scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        scrollPane.setBounds(15, 15, 216, 240);
        frame.add(scrollPane);


        frame.setVisible(true);

        try {
            serverSocket = new ServerSocket(1234);
            dialogs.append("Wait client...\n");
            while (true) {
                Server.socket = Server.serverSocket.accept();
                dialogs.append("Client connected\n");

                PrintWriter writer = new PrintWriter(socket.getOutputStream());
                streams.add(writer);

                Thread t = new Thread(new checkMessageFromClient(socket));
                t.start();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public class checkMessageFromClient implements Runnable{

        BufferedReader reader;

        checkMessageFromClient(Socket socket) {
            try {
                reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void run() {
            String newMessage;
            try {
                while ((newMessage = reader.readLine()) != null) {
                    java.util.Iterator<PrintWriter> it = streams.iterator();
                    while (it.hasNext()) {
                        PrintWriter writer = it.next();
                        writer.println(newMessage);
                        writer.flush();
                    }
                }
            } catch (Exception ex) {
                ex.printStackTrace();
                dialogs.append("Client disconnected");
            }
        }
    }
}
  • Вопрос задан
  • 211 просмотров
Решения вопроса 1
dima9595
@dima9595
Junior PHP
Дело скорей всего в том, что "сервер" использует порты, которые закрыты.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Konstantin18ko
@Konstantin18ko
Стоматолог
Порты через роутер пробросили?
Вы смотрите с локалки, он с глобалки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы