Example #1
0
        public List <CameraInstance> GetCameraInstanceList(string mediaServerId)
        {
            ResponseStruct rs;
            var            ret = MediaServerApis.GetCameraInstanceList(mediaServerId, out rs);

            if (rs.Code != ErrorNumber.None)
            {
                throw new HttpResponseException(JsonHelper.ToJson(rs));
            }

            return(ret);
        }
Example #2
0
        public bool SoftDeleteDvrVideoById(long dvrVideoId)
        {
            ResponseStruct rs;
            var            ret = MediaServerApis.SoftDeleteDvrVideoById(dvrVideoId, out rs);

            if (rs.Code != ErrorNumber.None)
            {
                throw new HttpResponseException(JsonHelper.ToJson(rs));
            }

            return(ret);
        }
Example #3
0
        public bool StartMediaServer(string mediaServerId)
        {
            ResponseStruct rs;
            var            ret = MediaServerApis.StartMediaServer(mediaServerId, out rs);

            if (rs.Code != ErrorNumber.None)
            {
                throw new HttpResponseException(JsonHelper.ToJson(rs));
            }

            return(ret);
        }
Example #4
0
        public List <CutMergeTaskStatusResponse> GetBacklogTaskList(string mediaServerId)
        {
            ResponseStruct rs;
            var            ret = MediaServerApis.GetBacklogTaskList(mediaServerId, out rs);

            if (rs.Code != ErrorNumber.None)
            {
                throw new HttpResponseException(JsonHelper.ToJson(rs));
            }

            return(ret);
        }
Example #5
0
        public ResZLMediaKitCloseRtpPort CloseRtpPort(string mediaServerId, ReqZLMediaKitCloseRtpPort req)
        {
            ResponseStruct rs;
            var            ret = MediaServerApis.CloseRtpPort(mediaServerId, req, out rs);

            if (rs.Code != ErrorNumber.None)
            {
                throw new HttpResponseException(JsonHelper.ToJson(rs));
            }

            return(ret);
        }
Example #6
0
        public ResZLMediaKitRtpPortList GetRtpPortList(string mediaServerId)
        {
            ResponseStruct rs;
            var            ret = MediaServerApis.GetRtpPortList(mediaServerId, out rs);

            if (rs.Code != ErrorNumber.None)
            {
                throw new HttpResponseException(JsonHelper.ToJson(rs));
            }

            return(ret);
        }
Example #7
0
        public ResZLMediaKitAddFFmpegProxy AddFFmpegProxy(string mediaServerId, string src_url)
        {
            ResponseStruct rs;
            var            ret = MediaServerApis.AddFFmpegProxy(mediaServerId, src_url, out rs);

            if (rs.Code != ErrorNumber.None)
            {
                throw new HttpResponseException(JsonHelper.ToJson(rs));
            }

            return(ret);
        }
Example #8
0
        public ResZLMediaKitIsRecord GetRecordStatus(string mediaServerId, ReqZLMediaKitStopRecord req)
        {
            ResponseStruct rs;
            var            ret = MediaServerApis.GetRecordStatus(mediaServerId, req, out rs);

            if (rs.Code != ErrorNumber.None)
            {
                throw new HttpResponseException(JsonHelper.ToJson(rs));
            }

            return(ret);
        }
Example #9
0
        public CutMergeTaskResponse CutOrMergeVideoFile(ReqCutOrMergeVideoFile rcmv)
        {
            ResponseStruct rs;
            var            ret = MediaServerApis.CutOrMergeVideoFile(rcmv, out rs);

            if (rs.Code != ErrorNumber.None)
            {
                throw new HttpResponseException(JsonHelper.ToJson(rs));
            }

            return(ret);
        }
Example #10
0
        public CameraInstance AddCameraInstance(string mediaServerId, ReqAddCameraInstance req)
        {
            ResponseStruct rs;
            var            ret = MediaServerApis.AddCameraInstance(mediaServerId, req, out rs);

            if (rs.Code != ErrorNumber.None)
            {
                throw new HttpResponseException(JsonHelper.ToJson(rs));
            }

            return(ret);
        }
Example #11
0
        public bool DeleteCameraInstance(string mediaServerId, string cameraId)
        {
            ResponseStruct rs;
            var            ret = MediaServerApis.DeleteCameraInstance(mediaServerId, cameraId, out rs);

            if (rs.Code != ErrorNumber.None)
            {
                throw new HttpResponseException(JsonHelper.ToJson(rs));
            }

            return(ret);
        }
Example #12
0
        public RecordFile GetDvrVideoById(long id)
        {
            ResponseStruct rs;
            var            ret = MediaServerApis.GetDvrVideoById(id, out rs);

            if (rs.Code != ErrorNumber.None)
            {
                throw new HttpResponseException(JsonHelper.ToJson(rs));
            }

            return(ret);
        }
Example #13
0
        public ResZLMediaKitAddStreamProxy AddStreamProxy(string deviceid, string url)
        {
            ResponseStruct rs;
            var            ret = MediaServerApis.AddStreamProxy(deviceid, url, out rs);

            if (rs.Code != ErrorNumber.None)
            {
                throw new HttpResponseException(JsonHelper.ToJson(rs));
            }

            return(ret);
        }
Example #14
0
        public DvrVideoResponseList GetDvrVideoList(ReqGetDvrVideo rgdv)
        {
            ResponseStruct rs;
            var            ret = MediaServerApis.GetDvrVideoList(rgdv, out rs);

            if (rs.Code != ErrorNumber.None)
            {
                throw new HttpResponseException(JsonHelper.ToJson(rs));
            }

            return(ret);
        }
        /// <summary>
        /// 停止gb28181摄像头
        /// </summary>
        /// <param name="session"></param>
        private static void stopGB28181(CameraSession session)
        {
            try
            {
                ResponseStruct rs       = null;
                var            mediaObj =
                    Common.MediaServerList.FindLast(x => x.MediaServerId.Equals(session.MediaServerId));

                if (mediaObj == null || mediaObj.IsRunning == false)
                {
                    return;
                }

                var req2 = new ReqZLMediaKitCloseStreams()
                {
                    App    = session.App,
                    Force  = true,
                    Schema = "rtmp",
                    Secret = "",
                    Stream = session.StreamId,
                    Vhost  = session.Vhost,
                };

                var ret2 = MediaServerApis.CloseStreams(mediaObj.MediaServerId, req2,
                                                        out rs);


                var req3 = new ReqZLMediaKitCloseRtpPort()
                {
                    Secret    = "",
                    Stream_Id = session.StreamId,
                };

                var ret3 = MediaServerApis.CloseRtpPort(mediaObj.MediaServerId, req3,
                                                        out rs);

                if (ret3.Code == 0)
                {
                    Console.WriteLine("GB28181结束成功->" + session.CameraId + "->" + session.CameraEx.Camera.ParentID + "->" +
                                      session.CameraEx.Camera.DeviceID);
                }
                else
                {
                    Console.WriteLine("GB28181结束失败->" + session.CameraId + "->" + session.CameraEx.Camera.ParentID + "->" +
                                      session.CameraEx.Camera.DeviceID + "->" + JsonHelper.ToJson(rs));
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("stopGB28181 Except:\r\n" + ex.Message + "\r\n" + ex.StackTrace);
            }
        }
        public List <PlayerSession> GetPlayerSessionList(string mediaServerId)
        {
            ResponseStruct rs;
            var            ret = MediaServerApis.GetPlayerSessionList(mediaServerId, out rs);

            if (rs.Code != ErrorNumber.None)
            {
                throw new HttpResponseException(JsonHelper.ToJson(rs));
            }

            foreach (var obj in ret)
            {
                obj.UpTime = (DateTime.Now - obj.OnlineTime).TotalSeconds;
            }
            return(ret);
        }
        /// <summary>
        /// 获取录制状态
        /// </summary>
        /// <param name="sdp"></param>
        /// <returns></returns>
        private bool getDvrOnorOff(StreamDvrPlan sdp)
        {
            var mediaServer = Common.MediaServerList.FindLast(x => x.MediaServerId.Equals(sdp.MediaServerId));

            if (mediaServer != null && mediaServer.IsRunning)
            {
                var sessionList = MediaServerApis.GetCameraSessionList(mediaServer.MediaServerId, out _);
                if (sessionList != null)
                {
                    var obj = sessionList.FindLast(x => x.CameraId.Equals(sdp.CameraId));
                    if (obj != null)
                    {
                        var ret = mediaServer.WebApi.GetRecordStatus(new ReqZLMediaKitStopRecord()
                        {
                            App    = obj.App,
                            Secret = "",
                            Stream = obj.StreamId,
                            Vhost  = obj.Vhost,
                        }, out _);
                        if (ret.Code == 0 && ret.Status != null)
                        {
                            try
                            {
                                lock (Common.CameraSessionLock)
                                {
                                    Common.CameraSessions.FindLast(x => x.CameraId.Equals(obj.CameraId) &&
                                                                   x.MediaServerId.Equals(obj.MediaServerId))
                                    .IsRecord = ret.Status;
                                }
                            }
                            catch
                            {
                                //
                            }

                            return((bool)ret.Status);
                        }
                    }
                }
            }

            return(false);
        }
Example #18
0
        /// <summary>
        /// 停止rtsp摄像头
        /// </summary>
        /// <param name="session"></param>
        private static void StopRtsp(CameraSession session)
        {
            try
            {
                ResponseStruct rs       = null !;
                var            mediaObj =
                    Common.MediaServerList.FindLast(x => x.MediaServerId.Equals(session.MediaServerId));

                if (mediaObj == null || mediaObj.IsRunning == false)
                {
                    return;
                }

                var req = new ReqZLMediaKitCloseStreams()
                {
                    App    = session.App,
                    Force  = true,
                    Schema = "rtmp",
                    Secret = "",
                    Stream = session.StreamId,
                    Vhost  = session.Vhost,
                };

                var ret = MediaServerApis.CloseStreams(mediaObj.MediaServerId, req,
                                                       out rs);
                if (ret.Code == 0)
                {
                    Logger.Logger.Info("Rtsp结束成功->" + session.CameraId + "->" + session.CameraEx !.InputUrl);
                }
                else
                {
                    Logger.Logger.Warn("Rtsp结束失败->" + session.CameraId + "->" + session.CameraEx !.InputUrl);
                }
            }
            catch (Exception ex)
            {
                Logger.Logger.Error("stopRtsp Except->" + ex.Message + "->" + ex.StackTrace);
            }
        }
        /// <summary>
        /// 设置是否启用录制
        /// </summary>
        /// <param name="sdp"></param>
        /// <param name="enable"></param>
        private void setDvrOnorOff(StreamDvrPlan sdp, bool enable)
        {
            var mediaServer = Common.MediaServerList.FindLast(x => x.MediaServerId.Equals(sdp.MediaServerId));

            if (mediaServer != null && mediaServer.IsRunning)
            {
                var sessionList = MediaServerApis.GetCameraSessionList(mediaServer.MediaServerId, out _);
                if (sessionList != null)
                {
                    var obj = sessionList.FindLast(x => x.CameraId.Equals(sdp.CameraId));
                    if (obj != null)
                    {
                        if (enable)
                        {
                            mediaServer.WebApi.StartRecord(new ReqZLMediaKitStartRecord()
                            {
                                App             = obj.App,
                                Secret          = "",
                                Stream          = obj.StreamId,
                                Vhost           = obj.Vhost,
                                Customized_Path = mediaServer.RecordFilePath,
                            }, out _);
                        }
                        else
                        {
                            mediaServer.WebApi.StopRecord(new ReqZLMediaKitStopRecord()
                            {
                                App    = obj.App,
                                Secret = "",
                                Stream = obj.StreamId,
                                Vhost  = obj.Vhost,
                            }, out _);
                        }
                    }
                }
            }
        }
        /// <summary>
        /// 文件一个一个删除
        /// </summary>
        /// <param name="videoSize"></param>
        /// <param name="sdp"></param>
        private void deleteFileOneByOne(decimal videoSize, StreamDvrPlan sdp)
        {
            var mediaServer = Common.MediaServerList.FindLast(x => x.MediaServerId.Equals(sdp.MediaServerId));

            if (mediaServer == null || !mediaServer.IsRunning)
            {
                return;
            }

            long deleteSize = 0;
            List <OrderByStruct> orderBy = new List <OrderByStruct>();

            orderBy.Add(new OrderByStruct()
            {
                FieldName  = "starttime",
                OrderByDir = OrderByDir.ASC,
            });
            ReqGetDvrVideo rgdv = new ReqGetDvrVideo()
            {
                CameraId       = sdp.CameraId,
                MediaServerId  = sdp.MediaServerId,
                EndTime        = null,
                IncludeDeleted = false,
                OrderBy        = orderBy,
                PageIndex      = 1,
                PageSize       = 10,
                StartTime      = null,
            };

            while (videoSize - deleteSize > sdp.LimitSpace)
            {
                DvrVideoResponseList videoList = MediaServerApis.GetDvrVideoList(rgdv, out ResponseStruct rs);
                if (videoList != null && videoList.DvrVideoList != null && videoList.DvrVideoList.Count > 0)
                {
                    OrmService.Db.Transaction(() =>
                    {
                        foreach (var ret in videoList.DvrVideoList)
                        {
                            if (ret != null)
                            {
                                if (mediaServer.CheckFileExists(ret.VideoPath, out _))
                                {
                                    mediaServer.DeleteFile(ret.VideoPath, out _);
                                    deleteSize += (long)ret.FileSize !;
                                    OrmService.Db.Update <RecordFile>().Set(x => x.UpdateTime, DateTime.Now)
                                    .Set(x => x.Deleted, true)
                                    .Where(x => x.Id == ret !.Id).ExecuteAffrows();
                                    LogWriter.WriteLog("删除录制文件", ret.VideoPath !);
                                    Thread.Sleep(20);
                                }
                            }

                            if ((videoSize - deleteSize) < sdp.LimitSpace)
                            {
                                break;
                            }
                        }
                    });
                }
            }
        }
Example #21
0
        /// <summary>
        /// 启动rtsp摄像头
        /// </summary>
        /// <param name="cil"></param>
        private static void liveRtsp(CameraInstance cil)
        {
            try
            {
                ResponseStruct rs       = null !;
                var            mediaObj =
                    Common.MediaServerList.FindLast(x => x.MediaServerId.Equals(cil.PushMediaServerId));

                if (mediaObj == null || mediaObj.IsRunning == false)
                {
                    return;
                }

                bool useFFmpeg = true;

                if (cil.RetryTimes < 2)
                {
                    //rtsp方式,先跳过三次,因为zlmediakit会自动维护掉线的ffmpeg,要延迟处理一下,不然会重复创建ffmpeg
                    cil.RetryTimes++;
                    return;
                }

                cil.RetryTimes = 0;
                ResZLMediaKitAddFFmpegProxy ret = null !;
                if (useFFmpeg)
                {
                    ret = MediaServerApis.AddFFmpegProxy(
                        mediaObj.MediaServerId,
                        cil.IfRtspUrl, out rs);
                }
                else
                {
                    ret = MediaServerApis.AddStreamProxy(mediaObj.MediaServerId,
                                                         cil.IfRtspUrl, out rs);
                }

                if (ret != null && rs.Code == ErrorNumber.None)
                {
                    Logger.Logger.Info("Rtsp推流成功->" + cil.CameraId + "->" + cil.IfRtspUrl);
                    CameraSession sessionsub = null !;
                    lock (Common.CameraSessionLock)
                    {
                        sessionsub = Common.CameraSessions.FindLast(x =>
                                                                    x.App !.Equals(ret.App) &&
                                                                    x.Vhost !.Equals(ret.Vhost) &&
                                                                    x.StreamId !.Equals(ret.StreamId)) !;
                    }

                    if (sessionsub != null)
                    {
                        lock (Common.CameraSessionLock)
                        {
                            sessionsub.CameraId = cil.CameraId;
                        }
                    }
                }
                else
                {
                    Logger.Logger.Warn(
                        "Rtsp推流失败->" + cil.CameraId + "->" + cil.IfRtspUrl + "->" + JsonHelper.ToJson(rs));
                }
            }
            catch (Exception ex)
            {
                Logger.Logger.Error("liveRtsp Except ->" + ex.Message + "->" + ex.StackTrace);
            }
        }
        /// <summary>
        /// 5秒一次获取摄像头注册信息
        /// </summary>
        private static void getCameraInstanceList()
        {
            int i = 0;

            while (true)
            {
                i++;
                try
                {
                    if (i == 1 || i % 2 == 0)
                    {
                        lock (Common.CameraInstanceListLock)
                        {
                            Common.CameraInstanceList.Clear();
                            Common.CameraInstanceList.AddRange(OrmService.Db.Select <CameraInstance>().Where("1=1")
                                                               .ToList());
                        }
                    }

                    if (Common.CameraInstanceList != null && Common.CameraInstanceList.Count > 0)
                    {
                        //循环列表
                        foreach (var cit in Common.CameraInstanceList)
                        {
                            Thread.Sleep(100);
                            if (cit != null && cit.EnableLive) //如果cit的是启动状态
                            {
                                Thread.Sleep(1000);
                                var mediaObj =
                                    Common.MediaServerList.FindLast(x => x.MediaServerId.Equals(cit.PushMediaServerId));
                                if (mediaObj != null && mediaObj.IsRunning)
                                {
                                    CameraSession session = null;
                                    try
                                    {
                                        if (cit.CameraType == CameraType.GB28181)
                                        {
                                            lock (Common.CameraSessionLock)
                                            {
                                                session = Common.CameraSessions.FindLast(x =>
                                                                                         x.ClientType == ClientType.Camera &&
                                                                                         x.CameraType == CameraType.GB28181 &&
                                                                                         x.CameraIpAddress.Equals(cit.CameraIpAddress) &&
                                                                                         x.CameraEx.Camera.DeviceID.Equals(cit.CameraChannelLable) &&
                                                                                         x.CameraEx.Camera.ParentID.Equals(cit.CameraDeviceLable));
                                            }
                                        }

                                        if (cit.CameraType == CameraType.Rtsp)
                                        {
                                            lock (Common.CameraSessionLock)
                                            {
                                                session = Common.CameraSessions.FindLast(x =>
                                                                                         x.ClientType == ClientType.Camera &&
                                                                                         x.CameraType == CameraType.Rtsp &&
                                                                                         x.CameraIpAddress.Equals(cit.CameraIpAddress) &&
                                                                                         x.CameraEx.InputUrl.Equals(cit.IfRtspUrl));
                                            }
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        continue;
                                    }

                                    bool           useFFmpeg = true;
                                    ResponseStruct rs;
                                    if (session == null || session.IsOnline == false) //如果没有,就启动
                                    {
                                        switch (cit.CameraType)
                                        {
                                        case CameraType.Rtsp: //rtsp的启动方式
                                            if (cit.RetryTimes < 2)
                                            {
                                                //rtsp方式,先跳过三次,因为zlmediakit会自动维护掉线的ffmpeg,要延迟处理一下,不然会重复创建ffmpeg
                                                cit.RetryTimes++;
                                                continue;
                                            }

                                            cit.RetryTimes = 0;
                                            ResZLMediaKitAddFFmpegProxy ret = null;
                                            if (useFFmpeg)
                                            {
                                                ret = MediaServerApis.AddFFmpegProxy(
                                                    mediaObj.MediaServerId,
                                                    cit.IfRtspUrl, out rs);
                                            }
                                            else
                                            {
                                                ret = MediaServerApis.AddStreamProxy(mediaObj.MediaServerId,
                                                                                     cit.IfRtspUrl, out rs);
                                            }

                                            if (ret != null && rs.Code == ErrorNumber.None)
                                            {
                                                CameraSession sessionsub = null;
                                                lock (Common.CameraSessionLock)
                                                {
                                                    sessionsub = Common.CameraSessions.FindLast(x =>
                                                                                                x.App !.Equals(ret.App) &&
                                                                                                x.Vhost !.Equals(ret.Vhost) &&
                                                                                                x.StreamId !.Equals(ret.StreamId));
                                                }

                                                if (sessionsub != null)
                                                {
                                                    lock (Common.CameraSessionLock)
                                                    {
                                                        sessionsub.CameraId = cit.CameraId;
                                                    }
                                                }
                                            }

                                            break;

                                        case CameraType.GB28181: //28181的启动方式

                                            var gbRet = CommonApi.LiveVideo(cit.PushMediaServerId,
                                                                            cit.CameraDeviceLable,
                                                                            cit.CameraChannelLable, out rs, (bool)cit.IfGb28181Tcp !);
                                            if (gbRet != null && rs.Code == ErrorNumber.None)
                                            {
                                                CameraSession sessionsub = null;
                                                lock (Common.CameraSessionLock)
                                                {
                                                    sessionsub = Common.CameraSessions.FindLast(x =>
                                                                                                x.App !.Equals(gbRet.App) &&
                                                                                                x.Vhost !.Equals(gbRet.Vhost) &&
                                                                                                x.StreamId !.Equals(gbRet.MediaId));
                                                }

                                                if (sessionsub != null)
                                                {
                                                    lock (Common.CameraSessionLock)
                                                    {
                                                        sessionsub.CameraId = cit.CameraId;
                                                    }
                                                }
                                            }

                                            break;
                                        }
                                    }
                                    else if (session != null && string.IsNullOrEmpty(session.CameraId))
                                    {
                                        CameraSession sessionsub = null;
                                        lock (Common.CameraSessionLock)
                                        {
                                            sessionsub = Common.CameraSessions.FindLast(x =>
                                                                                        x.App !.Equals(session.App) &&
                                                                                        x.Vhost !.Equals(session.Vhost) &&
                                                                                        x.StreamId !.Equals(session.StreamId));
                                        }

                                        if (sessionsub != null)
                                        {
                                            lock (Common.CameraSessionLock)
                                            {
                                                sessionsub.CameraId = cit.CameraId;
                                            }
                                        }
                                    }
                                }
                            }
                            else if (cit.EnableLive == false) //如果非启动的状态,就要停掉现有的
                            {
                                MediaServerInstance mediaObj = null;
                                lock (Common.MediaServerList)
                                {
                                    mediaObj =
                                        Common.MediaServerList.FindLast(x => x.MediaServerId.Equals(cit.PushMediaServerId));
                                }

                                if (mediaObj != null && mediaObj.IsRunning)
                                {
                                    CameraSession session = null;
                                    try
                                    {
                                        if (cit.CameraType == CameraType.GB28181)
                                        {
                                            lock (Common.CameraSessionLock)
                                            {
                                                session = Common.CameraSessions.FindLast(x =>
                                                                                         x.ClientType == ClientType.Camera &&
                                                                                         x.CameraType == CameraType.GB28181 &&
                                                                                         x.CameraIpAddress.Equals(cit.CameraIpAddress) &&
                                                                                         x.CameraEx.Camera.DeviceID.Equals(cit.CameraChannelLable) &&
                                                                                         x.CameraEx.Camera.ParentID.Equals(cit.CameraDeviceLable));
                                            }
                                        }

                                        if (cit.CameraType == CameraType.Rtsp)
                                        {
                                            lock (Common.CameraSessionLock)
                                            {
                                                session = Common.CameraSessions.FindLast(x =>
                                                                                         x.ClientType == ClientType.Camera &&
                                                                                         x.CameraType == CameraType.Rtsp &&
                                                                                         x.CameraIpAddress.Equals(cit.CameraIpAddress) &&
                                                                                         x.CameraEx.InputUrl.Equals(cit.IfRtspUrl));
                                            }
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        continue;
                                    }


                                    ResponseStruct rs;
                                    if (session != null)
                                    {
                                        switch (cit.CameraType)
                                        {
                                        case CameraType.Rtsp:
                                            var req = new ReqZLMediaKitCloseStreams()
                                            {
                                                App    = session.App,
                                                Force  = true,
                                                Schema = "rtmp",
                                                Secret = "",
                                                Stream = session.StreamId,
                                                Vhost  = session.Vhost,
                                            };
                                            var ret = MediaServerApis.CloseStreams(mediaObj.MediaServerId, req, out rs);
                                            break;

                                        case CameraType.GB28181:
                                            var req2 = new ReqZLMediaKitCloseStreams()
                                            {
                                                App    = session.App,
                                                Force  = true,
                                                Schema = "rtmp",
                                                Secret = "",
                                                Stream = session.StreamId,
                                                Vhost  = session.Vhost,
                                            };
                                            var ret2 = MediaServerApis.CloseStreams(mediaObj.MediaServerId, req2,
                                                                                    out rs);
                                            var req3 = new ReqZLMediaKitCloseRtpPort()
                                            {
                                                Secret    = "",
                                                Stream_Id = session.StreamId,
                                            };
                                            var ret3 = MediaServerApis.CloseRtpPort(mediaObj.MediaServerId, req3,
                                                                                    out rs);
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("报错了:\r\n" + ex.Message + "\r\n" + ex.StackTrace);
                    continue; //
                }

                Thread.Sleep(5000);
            }
        }