Я работаю над сетевым приложением, которое может асинхронно отправлять живые видеопотоки из одного приложения в другое, вроде Skype. Основная проблема, с которой я сталкиваюсь, заключается в том, что я хочу иметь возможность отправлять фреймы, но не должен знать их размер каждый раз перед получением.Как вы получаете пакеты через сокеты TCP, не зная их размер пакета перед получением?
Способ работы AForge.NET при обращении с изображениями заключается в том, что размер текущего кадра, скорее всего, будет отличаться от того, который был до него. Размер не является статичным, поэтому мне просто интересно, есть ли способ достичь этого. И я уже попробовал сначала отправить длину, а затем фрейм, но это не то, что я искал.
TCP - это * потоковой протокол *. Таким образом, нет ничего подобного * размер пакета *. (Когда вы читаете, вы не можете гарантировать, что он отправляется как один пакет). Так что либо префикс длины пакета, либо использование разделителя char/string между пакетами. –
AForge преобразует рамку в растровое изображение RGB24, поэтому вы почти уверены, что любое изображение будет иметь такую же длину, что и предыдущий, если вы не измените конфигурацию камеры. Но отправка длины изображения в качестве префикса в полезную нагрузку по-прежнему остается. –