Это способ, которым он должен работать.TCP использует пакеты для передачи данных, но это не видно из высокоуровневого API сокетов: вы открываете выходной поток и отправляете столько данных, сколько хотите.Эти данные разбиваются на пакеты с помощью стека протоколов TCP / IP.А на принимающей стороне вы открываете входной поток и получаете данные, не зная, что они разбиты на пакеты.
Если вам нужны два пакета уровня приложения, то разработайте протокол передачи с использованием разделителей между пакетами.или фрагменты данных фиксированного размера, или что-либо еще, чтобы различать, что является частью логического пакета, а что - частью следующего.