Scouser_AK

Пользователь

Регистрация: 21.06.2020

Сообщения: 4051

Рейтинг: -745

Нарушения: 110

Scouser_AK

Регистрация: 21.06.2020

Сообщения: 4051

Рейтинг: -745

Нарушения: 110

Всем привет, я опытный крудошлеп(нет(да)), делаю таску в универ и я не понимаю, почему у меня такие проблемы:

https://github.com/smurf-4fun/tournament-skj/blob/master/src/main/java/server/ServerImpl.java#L56

вот этот вызов не полностью срабатывает

тоесть вот эта строка не хочет выводиться клиенту перед инпутом:

https://github.com/smurf-4fun/tournament-skj/blob/master/src/main/java/client/Agent.java#L31

Я просто ввожу имя, и оно меня приветствует.

 

autoflush стоит, хз в чем проблема.

 

еще например, я ожидаю, что после https://github.com/smurf-4fun/tournament-skj/blob/master/src/main/java/server/ServerImpl.java#L61

я буду сразу ожидать инпут ( https://github.com/smurf-4fun/tournament-skj/blob/master/src/main/java/client/Game.java#L24 ), но мне приходится 2 раза писать join, чтобы запрос откликнулся.

 

Сообщение для всех например тоже игнорится:

https://github.com/smurf-4fun/tournament-skj/blob/master/src/main/java/server/ServerImpl.java#L60

 

Что я упускаю?

 

ps. да я на гитхабе тоже смурфы качаю кек(нет)

HealSlut

Пользователь

Регистрация: 25.08.2018

Сообщения: 2291

Рейтинг: 7382

HealSlut

Регистрация: 25.08.2018

Сообщения: 2291

Рейтинг: 7382

img

У тебя не с сокетами проблемы, а с логикой игры.

 
Scouser_AK сказал(а):

еще например, я ожидаю, что после https://github.com/smurf-4fun/tournament-skj/blob/master/src/main/java/server/ServerImpl.java#L61

я буду сразу ожидать инпут ( https://github.com/smurf-4fun/tournament-skj/blob/master/src/main/java/client/Game.java#L24 ), но мне приходится 2 раза писать join, чтобы запрос откликнулся.

Нажмите, чтобы раскрыть...

Ты в Game.java на 23 и 24 строчках два раза вызываешь agent.readLineRequest(). Поэтому у тебя и считывается два раза join. Первый раз проверяется, что != null, а второй - что == "join".

 

Scouser_AK сказал(а):

Сообщение для всех например тоже игнорится:

https://github.com/smurf-4fun/tournament-skj/blob/master/src/main/java/server/ServerImpl.java#L60

Нажмите, чтобы раскрыть...

Сообщение для всех у тебя посылается для агентов в agentsToPlayWith. Но при создании игры это изначально пустой массив. Вот и рассылаешь сообщение пустому множеству игроков.

 

Scouser_AK сказал(а):

тоесть вот эта строка не хочет выводиться клиенту перед инпутом:

Нажмите, чтобы раскрыть...

Тут хз, нужно смотреть как на клиенте происходит чтение.

Scouser_AK

Пользователь

Регистрация: 21.06.2020

Сообщения: 4051

Рейтинг: -745

Нарушения: 110

Scouser_AK

Регистрация: 21.06.2020

Сообщения: 4051

Рейтинг: -745

Нарушения: 110

HealSlut сказал(а):

У тебя не с сокетами проблемы, а с логикой игры.

 

Ты в Game.java на 23 и 24 строчках два раза вызываешь agent.readLineRequest(). Поэтому у тебя и считывается два раза join. Первый раз проверяется, что != null, а второй - что == "join".

 

Сообщение для всех у тебя посылается для агентов в agentsToPlayWith. Но при создании игры это изначально пустой массив. Вот и рассылаешь сообщение пустому множеству игроков.

 

Тут хз, нужно смотреть как на клиенте происходит чтение.

Нажмите, чтобы раскрыть...

Спс) лень просто эту дичь делать)

HealSlut сказал(а):

У тебя не с сокетами проблемы, а с логикой игры.

 

Ты в Game.java на 23 и 24 строчках два раза вызываешь agent.readLineRequest(). Поэтому у тебя и считывается два раза join. Первый раз проверяется, что != null, а второй - что == "join".

 

Сообщение для всех у тебя посылается для агентов в agentsToPlayWith. Но при создании игры это изначально пустой массив. Вот и рассылаешь сообщение пустому множеству игроков.

 

Тут хз, нужно смотреть как на клиенте происходит чтение.

Нажмите, чтобы раскрыть...

не знаешь еще почему тут

https://github.com/smurf-4fun/tournament-skj/blob/master/src/main/java/client/Game.java#L45-L48

после чтения первого плейера, второму плейеру не приходит "Enter the number"?

HealSlut

Пользователь

Регистрация: 25.08.2018

Сообщения: 2291

Рейтинг: 7382

HealSlut

Регистрация: 25.08.2018

Сообщения: 2291

Рейтинг: 7382

img
Scouser_AK сказал(а):

после чтения первого плейера, второму плейеру не приходит "Enter the number"?

Нажмите, чтобы раскрыть...

А число читает? Похоже на проблему с вводом имени. Так что может быть, что проблема на клиенте.

Scouser_AK

Пользователь

Регистрация: 21.06.2020

Сообщения: 4051

Рейтинг: -745

Нарушения: 110

Scouser_AK

Регистрация: 21.06.2020

Сообщения: 4051

Рейтинг: -745

Нарушения: 110

HealSlut сказал(а):

А число читает? Похоже на проблему с вводом имени. Так что может быть, что проблема на клиенте.

Нажмите, чтобы раскрыть...

Имени?

Ну типа первому игроку пишет Enter the number:, ответ не читается и сопернику сообщение не приходит

 

я для клиента telnet юзаю

HealSlut

Пользователь

Регистрация: 25.08.2018

Сообщения: 2291

Рейтинг: 7382

HealSlut

Регистрация: 25.08.2018

Сообщения: 2291

Рейтинг: 7382

img
Scouser_AK сказал(а):

я для клиента telnet юзаю

Нажмите, чтобы раскрыть...

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

Scouser_AK

Пользователь

Регистрация: 21.06.2020

Сообщения: 4051

Рейтинг: -745

Нарушения: 110

Scouser_AK

Регистрация: 21.06.2020

Сообщения: 4051

Рейтинг: -745

Нарушения: 110

HealSlut сказал(а):

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

Нажмите, чтобы раскрыть...

эх( так впадлу тесты писать к этой параше

 

мне кажется проблема в потоках, что-то не синхронизировал

 

 

upd. синхронизировал send и на второй инпут числа сработало на 2ой инпут-_-