Всех приветствую.
Все еще пытаюсь создать приложение video straming'a (client-server-client).
Суть:
Есть 2 клиента. 1 - отправитель, 2 - получатель.
1 шлет размер картинки, саму картинку. Сервер её получает и отправляет сначала размер картинки, а потом и саму картинку, другому клиенту.
Для C++ сокета я использую BOOST::Asio.
Появилась такая проблема:
Мне нужно на C++ сначала получить размер изображения, который отсылает Java, а затем и само изображение записать в массов байтов.
При чтении изображение Java'вским DataInputStream (на стороне сервера) - проблем никаких не возникает.
Но если я попытаюсь получать изображения Java сервера на C++ - появляется огромная проблема, в виде того, что я даже не знаю, что шлет сервер.
Что он шлет конкретно:
Как я тут заметил, C++ все же выдает символ начала чтения размера изображения и символ конца размера изображения:
Вот тут Java их отсылает:
Как мне можно получить размер получаемого изображения, а далее записать все изображение, к примеру, в byte[IMG_SIZE]?
Что-то типа такого:
int IMAGE_SIZE = SOCKET.READ_SOMETHING...
byte[IMAGE_SIZE] img = ??....
Java code:
private void ReadImage(){
while (true) {
try {
int token = is.readInt();
if (token == 4) {
dos.writeInt(4);
if (is.readUTF().equals("#@@#")) {
dos.writeUTF("#@@#");
int imgLength = is.readInt();
is.readUTF();
listener.onDataReceived(imgLength);
dos.writeInt(imgLength);
dos.writeUTF("-@@-");
dos.flush();
byte[] buffer = new byte[imgLength];
int len = 0;
while (len < imgLength) {
len += is.read(buffer, len, imgLength - len);
}
dos.write(buffer);
dos.flush();
}
}
} catch (Exception e) {
try {
ReconnectSockets();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
C++ Code:
void DataManager::ReadData()
{
boost::array<char, 40000> buf;
boost::system::error_code error;
size_t len = socket.read_some(boost::asio::buffer(buf), error);
string data(buf.begin(), buf.end());
cout << data << endl;
}
Заранее благодарю за ответ.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Задача: В любую область камеры идет нажатие на экранОбласть нажатия выделяется синим квадратом
Не получается сделать импорт библиотеки ArrayUtilsПри импорте возникает ошибка error: package org
Есть RecyclerView с картинками, которые загружаются из интернетаКак надо подключить ProgressBar, пока данные для RecyclerView грузятся? Вот код фрагмента
java зачем в конце блока }); стоит фигурная и круглая вместе вместе?