基于UDP的流媒体实现

项目简介

我们通过UDP来进行流媒体的传输,主要实现音乐的发送,通过UDP来进行组播,可以对应多个客户端,客户端方面,采用mpg123来进行音月资源的解析。

原理图

在这里插入图片描述
服务端采用多线程来实现节目单和节目资源的发送,客户端采用多进程,父进程接收资源,和显示节目单,在选择节目后,将资源发送给子进程,子进程来实现资源的解析。
在server端主要需要解析文件资源模块,节目单发送线程,节目资源发送线程和流量控制模块来控制资源发送的速率,接下来我将分模块讲解一下它的实现。

头文件的定义

先看一下代码吧

#ifndef _PROTO_H_
#define _PROTO_H_

#include <stdint.h>

#define DEFAULT_MGPPOUP		"239.0.0.2"			//广播地址					
#define DEFAULT_RCVPORT		"9000"				//端口

#define CHNNUM				100					//节目最大数

#define LISTCHNID			0					//节目单的id

#define MINCHNID			1					//最小节目号
#define MAXCHNID			(MINCHNID+CHNNUM-1)	//最大节目号

#define MSG_CHANNEL_MAX		(65536-20-8)		//资源最大发送量
#define MAX_DATA			(MSG_CHANNEL_MAX-sizeof(uint8_t))

#define MSG_LIST_MAX		(65536-20-8)							
#define MAX_ENTRY			(MSG_LIST_MAX-sizeof(uint8_t))

struct msg_channel_st		//频道信息
{
   
	uint8_t chnid;			//节目id
	uint8_t data[1];		//传输的数据
}__attribute__((packed));	//不需要对齐


struct msg_listentry_st		//节目单信息
{
   
	uint8_t chnid
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值