Форум программистов, компьютерный форум, киберфорум
Java: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 01.03.2014
Сообщений: 2

Чат Клиент-Сервер. Не отправляются и не принимаются сообщения

08.11.2014, 20:39. Показов 1125. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Изучаю яву уже месяц и решил запилить свой чат сервер-клиент.Но не могу понять почему не принимаются сообщения клиентом, да и севрер не сигналит о их приёме у себя и отправки
Код сервера
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package chat.server;
 
import java.io.*;
import java.net.*;
import java.util.*;
 
 
 
public class Server {
 
    ArrayList<PrintWriter> clients;
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
 
        Server server = new Server();
        server.go();
    }
    
    public void go(){ //Метод для запуска сервера
        clients = new ArrayList<PrintWriter>();
        System.out.println("Server started!");
        try{
            
            ServerSocket server  = new ServerSocket(4900);  // Запускаем сокет
            
            while(true){
                Socket clientSocket = server.accept();
                
                PrintWriter clientOutput = new PrintWriter(clientSocket.getOutputStream());
                clients.add(clientOutput); // Засовываем клиентский поток вводаа в arraylist
                Thread send = new Thread(new ClientHandler(clientSocket)); //Новый поток для отправки сообщения
                send.start(); 
                System.out.println("Get a new client!");
                
            }
            
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }
    
    public class ClientHandler implements Runnable{ // Делаем новый поток, для чтения сообщений от клиента
        BufferedReader reader;
        Socket clientSocket;
        
        public ClientHandler(Socket sock){
            
            try{
                clientSocket = sock; //Пробуем достать клиентский поток вывода
                InputStreamReader isReader = new InputStreamReader(clientSocket.getInputStream());
                reader = new BufferedReader(isReader);
                
            }catch(Exception ex){
                ex.printStackTrace();
            }
        }
        public void run(){  
            String message;
            
            try{
                
            while((message = reader.readLine()) != null){
                System.out.println("Read " + message);
                toAll(message);
            }
            }catch(Exception ex){
                ex.printStackTrace();
            }
            
        }
        
    } // Закрыл класс для чтения сообщений
    
    public void toAll(String message){ //Метод для отправки сообщения всем клиентам
        
        Iterator<PrintWriter> it = clients.iterator(); 
        System.out.println("Sending messgae!");
        while(it.hasNext()){ //Прообегаемся по ArrayList 
            try{
                PrintWriter writer = it.next();
                writer.println(message); // Отправляем каждому клиенту сообщение
                writer.flush();
            }catch(Exception ex){
                ex.printStackTrace();
            }
        } // конец while
        
    }
 
} // Закрываем класс
Код клиента
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package chat.client;
 
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
public class Client {
 
    JTextField outgoing;
    JTextArea incoming;
    PrintWriter writer;
    BufferedReader reader;
    Socket sock;
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
         Client advice = new Client();
         advice.go();
    }
 
    public void go(){ //Метод для запуска  сервера
        
        JFrame frame = new JFrame("Chat");
        JPanel mainPanel = new JPanel();
        incoming = new JTextArea(15,20);
        incoming.setLineWrap(true);
        incoming.setWrapStyleWord(true);
        incoming.setEditable(false);
        JScrollPane qSqroller = new JScrollPane(incoming);
        qSqroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        qSqroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        outgoing = new JTextField(20);
        JButton sendButton = new JButton("send");
        sendButton.addActionListener(new SendButtonListener());
        mainPanel.add(qSqroller);
        mainPanel.add(outgoing);
        mainPanel.add(sendButton);
        frame.getContentPane().add(BorderLayout.CENTER, mainPanel);
        setUpWorking();
        Thread reader = new Thread(new IncomingReader());
        reader.start(); // Новый поток для чтения сообщений
        frame.setSize(400, 500);
        frame.setVisible(true);
        
    }//закрываем метод
    private void setUpWorking(){ //Подключаемся к серверу 
        try{
            Socket soc = new Socket("127.0.0.1", 4900);
            InputStreamReader readerIS = new InputStreamReader(soc.getInputStream());
            reader = new BufferedReader(readerIS);
            writer = new PrintWriter(soc.getOutputStream());
            System.out.println("Good connect");
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }
    
    public class SendButtonListener implements ActionListener { //Обработчик для кнопки отправить
 
        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            try{
                //writer.println(outgoing.getText());
                //writer.flush();
            }catch(Exception ex){
                ex.printStackTrace();
            }
            outgoing.setText("");
            outgoing.requestFocus();
            
        }
        
    }//Закрываем обработчик
 
   public class IncomingReader implements Runnable{
 
    @Override
    public void run() {
        // TODO Auto-generated method stub
        String message;
        try{
            while((message = reader.readLine()) != null){
                System.out.println("read" + message);
                incoming.append(message + "\n");
            }
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }//Закрываем метод для чтения
       
   }
}
Помогите! УЖе час бьюсь
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.11.2014, 20:39
Ответы с готовыми решениями:

Не отправляются сообщения в чат
На игровом сайте по покеру есть чат. Я пишу в строке сообщение на английском, жму Ентер и оно исчезает. Другие все нормально отсылают и...

Пакеты отправляются, но не принимаются
Пытался сменить винду на Ubuntu, не пошло, старый ноут не поддерживает PAE... Снова поставил винду, и теперь пакеты отправляются, но не...

Не отправляются и не принимаются документы по факсу
:( Отправляю документ - не получают кроме какой-нибудь одной строки со всей страницы. Принимаются однозначно только в виде 5-сантим....

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.11.2014, 20:39
Помогаю со студенческими работами здесь

Клиент-Серверное приложение. Как сделать, чтобы сервер сам отправлял сообщения на клиент
Добрый день всем. Проблема заключается в следующем: Есть клиент-серверное приложение, хочу реализовать своего рода защиту, чтобы при...

Клиент-сервер чат
Всем доброго времени суток. Нужно организовать клиент-серверный чат через ServerSocket, ClientSocket. Работать должен следующим образом,...

Чат клиент-сервер
Народ, у меня похожая проблема. Написал чат на JAVA, естественно есть одна часть єто клиент и другая часть єто приложение (не апплет),...

Клиент-сервер чат на C++/C#
Здравствуйте, написал клиент-серверный чат, клиент на c#, сервер на консольном с++, но с winapi тоже В общем, дело в том, что все хорошо,...

Клиент-сервер чат на C++/C#
Здравствуйте, написал клиент-серверный чат, клиент на c#, сервер на консольном с++, но с winapi тоже В общем, дело в том, что все хорошо,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru