private void _client_ReceiveCompleted(object sender, ReceiveEventArgs args) { try { if (args.ByteLenght >= 4) { int code = BitConverter.ToInt32(args.ReceivedBytes, 0); switch (code) { case StreamEntityCode.FfmpegHeader: { CurrentHeader = FfmpegStreamHeader.DeserializeTo(args.ReceivedBytes); OnStreamHeaderRecieved(CurrentHeader); } break; case StreamEntityCode.HikvHeader: { CurrentHeader = HikvStreamHeader.DeserializeTo(args.ReceivedBytes); OnStreamHeaderRecieved(CurrentHeader); } break; case StreamEntityCode.StreamData: { OnStreamDataReceived(StreamData.DeserializeTo(args.ReceivedBytes)); } break; case StreamEntityCode.RemoteError: { RemoteError re = RemoteError.DeserializeTo(args.ReceivedBytes); OnErrorOccurred(new ErrorEventArgs(re.ErrorMessage, ErrorTypes.Receive)); } break; } } } catch (Exception e) { OnErrorOccurred(new ErrorEventArgs($"从远程流媒体服务器获取到异常数据:{e.Message}", ErrorTypes.Receive)); } }