/// <summary> /// 阻塞的方式处理控制器的消息,处理完之前无法接受控制器消息,属于监听子线程 /// </summary> /// <param name="packetInfo"></param> public static void DealControllerPacket(PacketInfo packetInfo) { int iPhyPortNo = packetInfo.GetPhyPort(); byte[] buffer = packetInfo.GetPacketByte(); PacketEntity packet = (PacketEntity)Util.BytesToObject(buffer); string content = packet.GetStrContent(); string srcIP = packet.GetHead().strSrcIP; string desIP = packet.GetHead().strDesIP; PacketHead.EN_PACKET_TYPE packetType = packet.GetHead().enPacketType; switch (packetType) { case PacketHead.EN_PACKET_TYPE.EN_ACK_SWITCH_ONLINE: Util.Log(Util.EN_LOG_LEVEL.EN_LOG_INFO, "控制器上线"); break; //收到控制器下发的流表 case PacketHead.EN_PACKET_TYPE.EN_PACKET_OUT_WITH_FLOW_ITEM: DealPacketOut(packetInfo); break; case PacketHead.EN_PACKET_TYPE.EN_PACKET_OUT_DUMP: //TODO break; default: break; } }
/// <summary> /// 处理消息队列中的消息 /// </summary> /// <param name="packetInfo">待处理的消息包</param> public static void DealReceivePacket(PacketInfo packetInfo) { int iPhyPortNo = packetInfo.GetPhyPort(); byte[] buffer = packetInfo.GetPacketByte(); PacketEntity packet = (PacketEntity)Util.BytesToObject(buffer); PacketHead.EN_PACKET_TYPE packetType = packet.GetHead().enPacketType; switch (packetType) { case PacketHead.EN_PACKET_TYPE.EN_NORMAL_PACKET: TranNormalPacket(packetInfo); break; default: break; } //Console.WriteLine("从端口" + iPhyPortNo + "收到消息:" + content); //Console.WriteLine("SrcIP: " + srcIP + "\tDesIP" + desIP); }
/// <summary> /// 处理接收到的消息的函数 /// </summary> /// <param name="packetInfo">待处理的消息</param> public static void DealReceivePacket(PacketInfo packetInfo) { byte[] buffer = packetInfo.GetPacketByte(); PacketEntity packet = (PacketEntity)Util.BytesToObject(buffer); PacketHead.EN_PACKET_TYPE packetType = packet.GetHead().enPacketType; //Console.WriteLine("从端口" + iPhyPortNo + "收到消息:" + content); //Console.WriteLine("SrcIP: " + srcIP + "\tDesIP: " + desIP); switch (packetType) { case PacketHead.EN_PACKET_TYPE.EN_SWITCH_ONLINE: DealSwitchOnlinePacket(packetInfo); break; case PacketHead.EN_PACKET_TYPE.EN_PACKET_IN: DealPakcetIn(packetInfo); break; default: break; } }