Потоковая передача больших сообщений через сокет потока IPPROTO_SCTP в C

89
3

Я пытаюсь создать приложение для потоковой передачи видео с минимальной задержкой "и некоторая обработка изображений будет выполнена", поскольку я собираю фреймы с использованием openCV и отправляю данные объекта mat на клиента, который должен иметь возможность просматривать их. эти сообщения являются большими кусками данных 230399 байт именно для моей текущей конфигурации, с которой я столкнулся, чтобы отправить объекты mat до и десериализовать и просматривать их с использованием сокетов TCP-потока, но у меня были проблемы с границами сообщений, поэтому я перешел в SCTP-сокеты, но теперь проблема в том, что я могу 't отправлять сообщения более чем за 1999 байт данных. Код, который я использую для создания сокетов,

ServerSocketFileDiscriptor= socket( AF_INET, SOCK_STREAM,IPPROTO_SCTP );
bzero( (void *)&serverAddress, sizeof(serverAddress) );
serverAddress.sin_family = AF_INET;
serverAddress.sin_addr.s_addr = htonl( INADDR_ANY );
serverAddress.sin_port = htons(29008);
bind( ServerSocketFileDiscriptor(structsockaddr*)&serverAddress,sizeof(serverAddress) );

/* Maximum of 1 streams will be available per socket */
memset( &message, 0, sizeof(message) );
message.sinit_num_ostreams = 1;
message.sinit_max_instreams = 1;
message.sinit_max_attempts = 2;
setsockopt( ServerSocketFileDiscriptor, IPPROTO_SCTP, SCTP_INITMSG,
&message, sizeof(message) );

listen( ServerSocketFileDiscriptor, 5 );

и код, который я использую для отправки сообщений, является

    int status=sctp_sendmsg( clientSocketFileDiscriptor, (void *)buffer, (size_t)strlen(mystr), NULL, 0, 0, 0, 0 /* stream */, 0, 0 );
cout <<status<<"....................................."<<endl;

спросил(а) 2016-01-20T17:27:00+03:00 4 года, 8 месяцев назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема