while((userInput1=br1.readLine())!=null||(userInput2=br2.readLine())!=null){
Это условие означает, что вы собираетесь читать br1 до EOS, прежде чем что-либо читать из br2.Это то, что вы на самом деле намеревались?
И наоборот, если вы застряли на br2.readLine()
, это означает две вещи: (а) br1
на EOS и (б) равноправный узел, связанный с br2
hasnничего не отправили или, по крайней мере, не отправили строку, оканчивающуюся новой строкой.
Возможно, вы страдаете распространенным заблуждением, что readLine () возвращает ноль, когда нет данных, готовых для чтения?
Также вы читаете строки, оканчивающиеся символами новой строки, которые удаляются вызовом readLine (), и затем записываете их без каких-либо символов новой строки, что вряд ли может быть правильным.
Мне кажется, чтона самом деле вы пишете прокси, в этом случае вам нужно два потока на сокет, одно чтение из A и запись в B, а другое чтение из B и запись в A. И если это прокси, вы должны использовать InputStreams и OutputStreamsа не читателей и писателей, поскольку у вас, вероятно, нет причин проверять данные, и поэтому вам не следует подвергать их преобразованию byte-> char и char-> byteпроцессы, подразумеваемые с использованием Readers и Writers.Есть дополнительные тонкости при написании прокси, но я буду ждать вашего подтверждения, прежде чем выяснить их.