/// <summary> /// 消息处理线程 /// </summary> public void MessageDel() { while (true) { try { IpMessage img = null; if (messageQueue.TryDequeue(out img)) { string msg = img.msg; log.Info(img.ip + "msg:" + msg); switch (msg) { //心跳消息 case "OK": PutMessage(img.ip, "OK"); break; default: ShowMessage(img.ip + ":" + msg + "\r\n"); break; } } } catch (Exception ex) { log.Error(ex); } Thread.Sleep(10); } }
public void Run() { while (true) { try { IpMessage im = (IpMessage)MessageInstance.getInstance().SendList.Get(); if (canSend(im.Msg.Length + 42)) { _serverUdp.Send(im.Msg.Content, im.Msg.Length, im.EndPoint); _lastHasSize = _lastHasSize + im.Msg.Length + 42; _isSend = 1; } else { if (_isSend == 1) { _lastTicks = DateTime.Now.Ticks; } _isSend = 0; Thread.Sleep(1); _lastHasSize = 0; } } catch (Exception e) { Log.Log.WriteErrorLog(e.Message); Log.Log.WriteErrorLog(e.StackTrace); } } }
public void Run() { while (true) { try { IpMessage im = (IpMessage)MessageInstance.getInstance().ServerList.Get(); BaseMessage bm = im.Msg; if (bm.ToType == GobalDef.BASE_MSG_FT_SERVER) { if (bm.Req == GobalDef.BASE_MSG_FT_REQ) { BaseMessage resultmsg = null; switch (bm.MCommand) { case GobalDef.COMMAND_MTYPE_PUBLIC: resultmsg = ParsePublicMsgReq(bm); break; } im.Msg = resultmsg; im.Msg.Seq = bm.Seq; im.Msg.PacketBuf(); //im.Msg.SetupBuf(im.Msg.Content, 0); MessageInstance.getInstance().SendList.Add(im); } else { } } } catch (Exception e) { Log.Log.WriteErrorLog(e.Message); Log.Log.WriteErrorLog(e.StackTrace); } } }
private void AsyncEndRecv(IAsyncResult iar) { try { IPEndPoint ipp = new IPEndPoint(IPAddress.Any, 0); byte[] msg = _serverClient.EndReceive(iar, ref ipp); try { _serverClient.BeginReceive(new AsyncCallback(AsyncEndRecv), _serverClient); } catch (Exception e) { Log.Log.WriteSystemLog("Server Re BeginReceive ERROR, So Can't Receive"); Log.Log.WriteErrorLog(e.Message); Log.Log.WriteErrorLog(e.StackTrace); } Log.Log.WriteErrorLog("recv msg length is: " + msg.Length); for (int i = 0; i < msg.Length; i++) { Log.Log.WriteErrorLog("index " + i + " " + msg[i].ToString("X")); } BaseMessage bm = MessageFactroy.GetMesssage(msg, 0); if (bm != null) { IpMessage im = new IpMessage(); im.EndPoint = ipp; im.Msg = bm; MessageInstance.getInstance().RecvList.Add(im); } } catch (Exception e) { Log.Log.WriteErrorLog(e.Message); Log.Log.WriteErrorLog(e.StackTrace); } }
public void Run() { while (true) { try { IpMessage im = (IpMessage)MessageInstance.getInstance().RecvList.Get(); DeviceInfo di = null; MobInfo mi = null; if (im.Msg.Req == GobalDef.BASE_MSG_FT_REQ) { if (im.Msg.FromType == GobalDef.BASE_MSG_FT_HUB) { di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(im.Msg.FromDevID); if (di != null) { di.IPPoint = im.EndPoint; } } else if (im.Msg.FromType == GobalDef.BASE_MSG_FT_END) { di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(im.Msg.FromDevID); if (di != null) { di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(di.ParentId); if (di != null) { di.IPPoint = im.EndPoint; } } } else if (im.Msg.FromType == GobalDef.BASE_MSG_FT_MOBILE) { mi = BaseInfoInstance.getInstance().MobInfo.GetMobInfo(im.Msg.FromDevID); if (mi != null) { mi.EndPoint = im.EndPoint; } } if (im.Msg.ToType == GobalDef.BASE_MSG_FT_SERVER) { MessageInstance.getInstance().ServerList.Add(im); } else if (im.Msg.ToType == GobalDef.BASE_MSG_FT_HUB) { di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(im.Msg.ToDevID); if (di != null) { im.EndPoint = di.IPPoint; MessageInstance.getInstance().SendList.Add(im); } } else if (im.Msg.ToType == GobalDef.BASE_MSG_FT_END) { di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(im.Msg.ToDevID); if (di != null) { di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(di.ParentId); if (di != null) { im.EndPoint = di.IPPoint; MessageInstance.getInstance().SendList.Add(im); } } } else if (im.Msg.ToType == GobalDef.BASE_MSG_FT_MOBILE) { mi = BaseInfoInstance.getInstance().MobInfo.GetMobInfo(im.Msg.ToDevID); if (mi != null) { im.EndPoint = mi.EndPoint; MessageInstance.getInstance().SendList.Add(im); } } } else if (im.Msg.Req == GobalDef.BASE_MSG_FT_RCV) { if (im.Msg.ToType == GobalDef.BASE_MSG_FT_END) { di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(im.Msg.FromDevID); if (di != null) { di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(di.ParentId); if (di != null) { di.IPPoint = im.EndPoint; } } } else if (im.Msg.ToType == GobalDef.BASE_MSG_FT_HUB) { di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(im.Msg.FromDevID); if (di != null) { di.IPPoint = im.EndPoint; } } else if (im.Msg.ToType == GobalDef.BASE_MSG_FT_MOBILE) { mi = BaseInfoInstance.getInstance().MobInfo.GetMobInfo(im.Msg.FromDevID); if (mi != null) { mi.EndPoint = im.EndPoint; } } if (im.Msg.FromType == GobalDef.BASE_MSG_FT_END) { di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(im.Msg.ToDevID); if (di != null) { di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(di.ParentId); if (di != null) { im.EndPoint = di.IPPoint; MessageInstance.getInstance().SendList.Add(im); } } } else if (im.Msg.FromType == GobalDef.BASE_MSG_FT_HUB) { di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(im.Msg.ToDevID); if (di != null) { im.EndPoint = di.IPPoint; MessageInstance.getInstance().SendList.Add(im); } } else if (im.Msg.FromType == GobalDef.BASE_MSG_FT_MOBILE) { mi = BaseInfoInstance.getInstance().MobInfo.GetMobInfo(im.Msg.ToDevID); if (mi != null) { im.EndPoint = mi.EndPoint; MessageInstance.getInstance().SendList.Add(im); } } else if (im.Msg.FromType == GobalDef.BASE_MSG_FT_SERVER) { MessageInstance.getInstance().ServerList.Add(im); } } } catch (Exception e) { Log.Log.WriteErrorLog(e.Message); Log.Log.WriteErrorLog(e.StackTrace); } } }