Справка по программе простого чата Java, время ожидания клиента при соединении с сервером - PullRequest
0 голосов
/ 05 декабря 2010

Я создаю очень простую программу чата Java, используя сокеты Java TCP.Я новичок в программировании сокетов и Java.Я не могу подключиться к серверу, потому что каждый раз, когда клиент подключается к серверу, время ожидания истекает.Возможно, это потому, что я набираю неправильный IP-адрес - я не знаю.

Вот код для Сервера:

       try
       {

            int fport = Integer.valueOf(port.getText());
            ServerSocket server = new ServerSocket(fport);
            Socket socket = server.accept();
            msg.append("\\n Server is listening to port:" + port.getText());
            BufferedReader input = new BufferedReader( new InputStreamReader(socket.getInputStream()));
            PrintWriter out = new PrintWriter(socket.getOutputStream());
            out.print(msgtxt.getText());
            msg.append("\n\n" + input.readLine());
            msg.append("\n\n" + Nombre.getText() + msgtxt.getText());


       }
       catch (Exception ex)
       {
           msg.setText("\n\n" + "Error:" + ex.getMessage());
       }

Вот кодКлиент:

        try
        {
            int iport = Integer.valueOf(port.getText());
            int i1;
            int i2;
            int i3;
            int i4;
            i1 = Integer.valueOf(ip.getText());
            i2 = Integer.valueOf(ip1.getText());
            i3 = Integer.valueOf(ip2.getText());
            i4 = Integer.valueOf(ip3.getText());
            byte[] b = new byte[] {(byte)i1, (byte)i2, (byte)i3, (byte)i4 };
            InetAddress ipaddr = InetAddress.getByAddress(b);
            Socket sock = new Socket(ipaddr, iport);
            BufferedReader input = new BufferedReader(new InputStreamReader(sock.getInputStream()));
            BufferedWriter output = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
            output.write(m.getText());
            while(!input.ready()){}
            msg.setText("\n\n" + input.readLine());
            msg.setText("\n\n" + m.getText());
            output.close();
            input.close();
        }
        catch (Exception ex)
        {
            msg.setText("\n\n" + "Error: " + ex.getMessage());
        }

1 Ответ

0 голосов
/ 05 декабря 2010

убедитесь, что вы можете подключиться к серверу с помощью telnet (в Windows вам может потребоваться установить его, поскольку он больше не устанавливается по умолчанию).

По сути, откройте соединение с вашим сервером и убедитесь, что оно работает:

telnet host port

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

одна нота: вы можете открыть сокет, не создавая INetAddress, как вы это сделали, просто новый сокет (имя хоста, порт).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...