TsOverIP的发送

TSOverIP

通过IP网络传输TS流数据,主要是通过单播(UDP)或组播(Multicast)的方式进行传输。考虑到以太网中数据帧的最大长度为1500字节,所以TSOverIP规定,每7个TS数据包封装在一起组成一个IP包进行发送。

网上的资料不多,我写一个发送psi的程序,却发现问题多多,逐个解决之后,总结一下:

1.一般情况下,一次发送一个IP包为7*188B=1316字节(虽然,可以自定义发送和接收的IP包封装为1~7个188B);

2.若一个TDT表内容只有1个188B,另外的SDT表假设3个188B,那该如何封装和连续计数呢?

  答:还是分开使用各自的计时器进行计数,有几种表使用几个pid则用几个计数器;计数器当程序进行发送时才开始计数,全局变量。一个188B的情况,不要怕浪费资源,剩余6个188为空包。当TDT和TOT一起发送,他们使用的同一个pid=0x14,则5个空包,2个内容。空包用pid=0x1FFF进行填充即可。

3.发送间隔

Thread.Sleep(TimeSpan.FromMilliseconds(db._EitPF_Interval)); //毫秒计数的时间间隔

按毫秒级让线程休息xx 毫秒即可,把发送的线程看成是实时的过程(封装数据采用多线程,数据提前产生好;避免和发送过程一起等待时间造成响应问题,资源冲突等问题)

4.多线程

多线程之间注意逻辑关系,注意引入互斥类mutex。

   lock (this)
                        {
                            mutex.WaitOne();

。。。。。。。。。。。。。。。。。 //处理发送内容

                           mutex.ReleaseMutex();
                        }

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值