前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RTP之COMP

RTP之COMP

作者头像
Taishan3721
发布2022-12-05 15:53:07
6370
发布2022-12-05 15:53:07
举报
文章被收录于专栏:这里只有VxWorks这里只有VxWorks

Message Channel是一种基于Socket的面向连接的通信机制。Task以Message的形式交换数据,Message的大小和格式可变,一旦建立连接,它们可以在全双工模式下来回传递

单机模式的Message Channel基于COMP实现,其速度略慢于Message Queue,但具有显著的优势(应用程序的可移植性,以供多节点Message Channel使用等),支持Kernel/RTP之间的Task通信

COMP(Connection-Oriented Message Passing)协议使用标准的Socket API,Domain为AF_LOCAL,Type为SOCK_SEQPACKET

COMP基于连接,类似于TCP,携带变长消息,类似于UDP,但是使用时并不依赖TCP/IP协议栈。它使用一个类似于文件路径的string做为地址,地址格式必须是/comp/socket/0xabcd,abcd为十六进制数,取值范围是0x1 - 0xffff,即1 - 65535

要想使用COMP,在VIP中包含组件INCLUDE_UN_COMP_SHOW,然后使用Socket API即可:socket()、bind()、listen()、accept()、connect()、read()、write()、send()、recv(),以及getsockopt()、setsockopt()、ioctl(),还有select()

send()就是在write()的基础上增加了一个flag: MSG_EXP,类似于Message Queue里的MSG_PRI_URGENT

recv()就是在read()的基础上增加了两个flag: MSG_PEEK和MSG_DONTWAIT

getsockopt()/setsockopt()支持四种Option: SO_SNDBUF、SO_RCVBUF、SO_SNDTIMEO、SO_RCVTIMEO

ioctl()支持两种Function Code: 类似于MSG_PEEK的FIONREAD和类似于MSG_DONTWAIT的FIONBIO

查看COMP连接,使用unstatShow()

简单对比一下Message Channel和Message Queue

Message Channel

Message Queue

面向连接

非面向连接

双向

单向

Message长度可变

Message长度固定

Message数量无限制

Message数量固定

位置透明

Public Object支持RTP通信

使用Socket API

专用API

支持IO操作:select()/read()/write/ioctl()/close()

不支持IO操作

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 这里只有VxWorks 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档