public static void DeviceControl(string requestDataJson, UDPClientItemBusiness.ClientItem item) { object outModel = null; object requestModel = null; DataFactory.CreateResponseProtocolData(TransmiteEnum.远程设备控制指令, requestDataJson, ref requestModel, ref outModel); DeviceControlAnswerRequestDataModel requestDataModel = (DeviceControlAnswerRequestDataModel)requestModel; DeviceControlOutParmasModel responseDataModel = (DeviceControlOutParmasModel)outModel; UDPSocketAnswerModel answerModel = null; string orderId = string.Empty; bool bSuccess = GetResponseModelResultCode(responseDataModel.ResponseModel); answerModel = UDPSocketAnswerBusiness.GetAnswerModel(requestDataModel.SN); if (requestDataModel.Result_Code == "1" && bSuccess && UDPSocketAnswerBusiness.ExistSN(requestDataModel.SN)) { //如果应答结果正确,清除应答缓存,添加对手机号的接口调用锁定 UDPSocketAnswerBusiness.Remove(requestDataModel.SN); } string logTxt = "[接收:" + requestDataJson + "]" + System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); string radarToken = string.Empty; if (answerModel != null && XCGameRadarDeviceTokenBusiness.GetRouteDeviceToken(requestDataModel.StoreId, answerModel.Segment, out radarToken)) { } UDPLogHelper.SaveUDPDeviceControlLog(requestDataModel.StoreId, requestDataModel.OrderId, ((IPEndPoint)item.remotePoint).Address.ToString(), ((IPEndPoint)item.remotePoint).Port, requestDataModel.SN, requestDataJson, responseDataModel.ResponseJson, bSuccess, logTxt); string message = "[接收:" + requestDataJson + "]" + "[响应:" + responseDataModel.ResponseJson + "]"; SignalrServerToClient.BroadcastMessage(Convert.ToInt32(TransmiteEnum.雷达心跳), "远程设备控制指令响应", radarToken, message, System.DateTime.Now); }
protected void Page_Load(object sender, EventArgs e) { UDPSocketAnswerModel answerModel = new UDPSocketAnswerModel("192.168.1.145", 50, null, "1234567890", System.DateTime.Now, "15618920033", "100027", "0001", "20171014300027", 10, "23432"); UDPSocketAnswerBusiness.SetAnswer(answerModel); string key = "100027" + "_" + "0001"; string token = "62fb63fcc33c246999246cb440e24b1b0"; XCGameRouteDeviceCache.AddToken(key, token); }
static void FailResponseProcess() { if (UDPSocketAnswerBusiness.UDPSocketAnswer.Count > 0) { var query = from item in UDPSocketAnswerBusiness.UDPSocketAnswer.Cast <DictionaryEntry>() where ((UDPSocketAnswerModel)item.Value).CreateTime < DateTime.Now.AddSeconds(-10) select item.Key.ToString(); if (query.Count() > 0) { foreach (var key in query.ToList <string>()) { UDPSocketAnswerModel model = UDPSocketAnswerBusiness.GetAnswerModel(key); XCCloudService.SocketService.UDP.Server.Send(model.IP, model.Port, model.Data); } } Thread.Sleep(1000); } }
/// <summary> /// 设置应答缓存 /// </summary> /// <param name="answerModel">应答模式对象,用于接收端无响应时重新发送</param> /// <returns></returns> public static string SetAnswer(UDPSocketAnswerModel answerModel) { UDPSocketAnswerCache.AddAnswer(answerModel.SN, answerModel); return(sn.ToString()); }