C# Socket 转发封装后码流半包,粘包问题

  • 本人采用C# Socket 传输视频码流信息,涉及到多路视频一起发送,因此需要封装数据, 因为数据比较大粘包,半包现象严重,不能够显示画面,现在说下解决粘包半包的方法,这里只说服务器接收端接收方法:
  private void receiveData(object state)
        {
            //send = new sendDada();
            Socket clientSocket = state as Socket;
            byte[] buffer = new byte[1024 * 1024 * 8];     //接收缓冲池
            byte[] catchbuff = null;                       //缓存包数据
            int lenght;                                    //接收长度
            try
            {
                //数据接收
                while ((lenght = clientSocket.Receive(buffer)) > 0)    
                {
                    if (catchbuff == null)
                    {   //一个数据包开头
                        catchbuff = new byte[lenght];                       //声明缓存包长度
                        Array.Copy(buffer,catchbuff,lenght );               //将缓冲池中数据复制到缓存中
                    }
                    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值