Это ситуация:
Я работаю над проектом, в котором мне нужно время от времени отправлять одно или несколько изображений на сервер и с него, а также множество других типов.данных, представленных с текстом.В настоящее время это делается путем отправки сообщения с надписью «входящее изображение размера x, которое будет использоваться как y» (это, конечно, не «сформулировано»), а затем я вызываю метод, который читает следующий xбайтов через DataInputStream.Сначала я столкнулся с некоторыми проблемами, связанными с задержкой, но я заставил сервер порождать новый поток для отправки сообщения «входящее изображение», а затем дождался флага, который устанавливается, когда клиент отвечает «Я готов».для изображения "сообщение.Теперь он работает определенным образом, но если что-то еще, например, сообщение чата, отправляется во время передачи изображения, это сообщение, предназначенное для BufferedReader, будет прочитано как необработанные байты и использовано как часть изображения.Поэтому мне придется блокировать все исходящие данные (и добавить их в очередь), когда будет отправлено изображение.Но это кажется очень неправильным и раздражающим, так как пользователи приложения не смогут общаться в чате при получении / загрузке большого изображения.
Это то, что мне нужно: Итак, мне либо нужно настроить независимый каналиспользовать для необработанных данных.Который, насколько я понимаю из некоторой переделки, мне придется установить новый сокет поверх нового порта, который кажется ненужным.Другой способ, который я вижу, чтобы решить эту проблему, состоит в том, чтобы как-то использовать тег каждого пакета с битом «это текстовые / необработанные данные», но я понятия не имею, как это сделать с Java?Можете ли вы добавить информацию в заголовок пакета при записи чего-либо в поток (который будет содержать каждый пакет, содержащий эту информацию), а затем прочитать данные пакета на другом конце и действовать соответственно?
Как вы можете видетьУ меня нет большого опыта работы с сетями, и я не использовал Java в течение длительного времени.Это тоже мой первый пост здесь, так что будьте добры.Если что-то было неясно, спросите, а я уточню.Все идеи приветствуются!(Возможно, есть стандартный способ сделать это?)
Большое спасибо!