UDP网络通信OSC 协议

本文介绍了如何使用UDP进行网络通信,并详细解析了OSC(Open Sound Control)协议的结构,包括消息头、时间戳、地址和参数类型的组织方式。提供了代码实现,便于理解和自定义解析。
摘要由CSDN通过智能技术生成

使用方法

OscMessage mesg;
mesg.setAddress("m");
mesg.addIntArg(10);
mesg.addIntArg(11);
mesg.addIntArg(12);

g_oscSend.sendMessage(mesg);

 

 

 

先做记录,再做程序

 

整个消息是放在一个数组中

前8个字符做头   为#bundle\0

下面8个字节记录时间  这里都是1, 内存中为 0 0 0 0 0 0 0 1

再下面4个字节 整数  ,这里的数字大小指的是,osc地址的地址距离数据末尾的字节数 ,(也就是接收到数据包的长度减去这个值,就是osc消息的Adrrs的位置)

再下面就是地址字符串   大小根据字符串大小 ,然后4个字节对齐,不足补到4的倍数

再下面是所有参数的类型   第一个是 逗号,不知为何这样,  下面才是类型, 这里如果数量不是4的倍数也要补

接下来是每个参数的内存

 

 

类型

enum TypeTagValues {
    TRUE_TYPE_TAG = 'T',
    FALSE_TYPE_TAG = 'F',
    NIL_TYPE_TAG = 'N',
    INFINITUM_TYPE_TAG = 'I',
    INT32_TYPE_TAG = 'i',
    FLOAT_TYPE_TAG = 'f'
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OSC(Open Sound Control)是一种通信协议,用于在音频、音乐和多媒体应用程序之间传输数据。以下是使用C语言编写OSC协议的示例代码: 首先需要定义OSC消息的结构体,包括地址、参数类型和参数值: ```c typedef struct osc_message { char *address; char *types; void **arguments; } osc_message; ``` 接下来,可以使用套接字(socket)来发送OSC消息。以下是一个简单的OSC消息发送函数: ```c #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #define OSC_PORT 9000 void send_osc_message(osc_message *message, char *ip_address) { int sockfd; struct sockaddr_in servaddr; sockfd = socket(AF_INET, SOCK_DGRAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = inet_addr(ip_address); servaddr.sin_port = htons(OSC_PORT); sendto(sockfd, message, sizeof(*message), 0, (struct sockaddr *)&servaddr, sizeof(servaddr)); close(sockfd); } ``` 此函数将OSC消息打包并发送到指定的IP地址和端口。可以使用以下代码创建并发送一个简单的OSC消息: ```c osc_message message = { .address = "/test", .types = "s", .arguments = (void **)&("Hello, world!") }; send_osc_message(&message, "127.0.0.1"); ``` 这将发送一个地址为“/test”的OSC消息,参数类型为字符串(“s”),参数值为“Hello, world!”到本地主机(127.0.0.1)的端口9000。 以上是一个简单的OSC协议C语言编写示例,供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值