Это странно.У меня есть Runnable, которому поручено отправить сообщение в сокет и получить ответ.Когда я создаю тестовый класс, который просто создает экземпляр Runnable, отправляет сообщение и получает ответ, я получаю ожидаемый вывод (строка CSV).Однако, когда я запускаю точный тот же код, что и часть приложения, которое я создаю, в ответ получается множество непечатаемых символов, начиная с "\ u0015" (NAK
). 1 Протокол, использующий сокеты, не выдает NAK
в любой момент.(Должно выдаваться "FAIL_{reason}"
.
. Тот факт, что я получаю NAK
, каким-либо образом связан с реализацией Java самой Socket
? (Я пытался получить стектрассировка для вызовов, но все, что я получаю, это до того момента, когда вызывается метод run()
, без вызова методов изнутри. Насколько я знаю, ни в одной точке между чтением из потока Socket и приложенияс помощью обёртки, запрашивая ответ, получает ли к ответу символ для NAK
.)
Редактировать: Поговорив с более осведомленным коллегой о неожиданном ответе,он, кажется, чувствует, что приложение, создающее сервер сокетов, отвечает этими байтами, однако, ничего в его коде явно не заставляет его делать это, учитывая, что оно должно отвечать читаемым человеком текстом.
- В частности, я возвращаю байты
0x15 0x03 0x01 0x00 0x02 0x02
, которые соответствуют NAK ETX NUL STX STX
, что является бредом.