12 / 12 / 10
Регистрация: 04.06.2017
Сообщений: 99
|
||||||||||||||||
1 | ||||||||||||||||
Не считывает данные с входного потока16.09.2017, 21:53. Показов 676. Ответов 3
Пытаюсь сделать консольный чат на сокетах. В методе run() в классе MessageHandler (внутренний класс класса Client) поток блокируется при попытке чтения из входного потока сокета: message = reader.readLine();. Но ведь данные я туда записываю: writer.println(message);, writer.flush();
Main.java
0
|
16.09.2017, 21:53 | |
Ответы с готовыми решениями:
3
Java & Flash.Сервек, который считывает из входного потока информацию и потом обрабатывает как XML Как правильно считать данные из стандартного входного потока в С++? Слова входного потока Очистка входного потока |
Автоматизируй это!
|
|
18.09.2017, 18:17 | 2 |
1) ну ты посмотри простые сокетные чаты как делают, хоть у того же Хорстманна
2) у тебя охрененная связанность классов, ибо сервер знает о классе клиент и его вложенном классе и даже(!) запускает его на выполнение. Так не делают. 3) класс мессаджхендлер излишний, все надо в клиенте делать включая и пуск потока считывания. Сервер ничего не знает о клиенте, тот о сервере
0
|
12 / 12 / 10
Регистрация: 04.06.2017
Сообщений: 99
|
|
18.09.2017, 18:51 [ТС] | 3 |
Welemir1, ну во-первых можно было просто помочь исправить ошибку, а не философствовать "как нужно делать". А во-вторых, как это сервер ничего не знает о клиенте? А кто будет хранить логин, пароль и ник клиента? Кто будет определять какому клиенту отправить сообщение. Кто будет хранить всех клиентов на сервере и, если есть, группы?
0
|
Автоматизируй это!
|
|
18.09.2017, 19:31 | 4 |
ого, сколько требований, вообще то я сразу тебе показал простое решение -снести велосипед и посмотреть у Хорстманна простейший вариант.
Два вложенных класса, задействованных непонятно зачем и запускающиеся не своим внешним классом? Где видно, что сервер что-то шлет клиенту? Что клиент должен прочесть то, там где у тебя "подвисает"? Такой код и читать сложно -много пересечений: клиент знает о сервере, тот о клиенте, притом клиент не умеет работать со своим вложенным классом, но с ним работает сервер, а сервер не может работать со своим вложенным классом, его вообще из метода мейн запускают вручную. Это не философия, это правила ООП - как можно меньше связности в классах, иначе изменение одного ведет за собой изменение всех остальных. Хочешь философии -читай Эккеля. Я тебе говорю не о сущности "клиент", а о самом классе клиент, не желательно чтобы сервер знал о нем и тем более запускал вложенный класс клиента.
0
|
18.09.2017, 19:31 | |
18.09.2017, 19:31 | |
Помогаю со студенческими работами здесь
4
Подсчет входного потока Получение информации из входного потока Прочитать все из входного потока Проверка входного потока на ошибки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |