我正在尝试以最小的延迟构建视频流应用程序“并且将要完成一些图像处理”,因为我正在使用openCV捕获帧并将mat对象的数据发送给应该能够的客户端查看它们。 这些消息是230399字节的大块数据,完全符合我当前的配置 我manged发送mat对象之前和反序列化并使用TCP流套接字查看它们但我遇到了消息边界问题所以我转移到SCTP套接字但现在问题是我无法发送超过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;