#java #network-programming
#java #сетевое программирование
Вопрос:
Итак, у меня есть простой сервер сокетов и сокет. Я успешно запускаю сервер сокетов. Клиентский сокет подключается и отправляет строку — это работает. Я хочу, чтобы сервер записал другую информацию на основе этой строки. Я могу проверить, что это за строка, и передать OutputStream клиенту, но всякий раз, когда я пишу в него и сбрасываю, клиентский InputStream НИКОГДА не находится в состоянии готовности и никогда не получит сообщение обратно… Я просто не вижу, что я делаю неправильно.
Весь код находится на http://pastebin.com/u/omegazero
NetworkAgent.java является ли клиент, SimbadAgent.java является ли сервер и UserAgent.java это фактическая реализация указанного сервера (сервер является абстрактным по другим причинам).
Скомпилируйте все, затем запустите UserAgent, за которым следует NetworkAgent, и вы увидите, что произойдет.
Ответ №1:
Выполнил ваш код (после комментария ссылки на StringQueue в SimbadAgent), и я получил следующий вывод.
wrote get_cmd
Input shutdown? false
iS()iI()iM()iB()iA()iD()i ()iB()iO()iO()iY()iA()NETWORKAGENT: Response to "get_cmd": "SIMBAD BOOYA"
Комментарии:
1. Подождите … неужели? Мне придется протестировать его на другой ОС … возможно, это моя настройка Debian или что-то странное. Спасибо.
2. На самом деле это было потому, что мне пришлось переключить их на PrintWriter и BufferedReader, если кто-нибудь в конце концов прочитает это. Java, по-видимому, непостоянна в отношении потоков символов..