在C中通过IPPROTO_SCTP流套接字流式传输大型消息

时间:2016-01-20 14:28:00

标签: c++ c sockets sctp

我正在尝试以最小的延迟构建视频流应用程序“并且将要完成一些图像处理”,因为我正在使用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;

0 个答案:

没有答案