/// <summary> /// 接收消息 /// </summary> /// <param name="clientSocket"></param> private static void ReceiveMessage(object _data) { DP_Msg data = (DP_Msg)_data; while (!data.m_bError) { Thread.Sleep(10); //lock (data.m_Lock) { Queue <WfPacket> local_RecvQueue = data.m_RecvQueue; Queue <WfPacket> local_SendQueue = data.m_SendQueue; object local_Lock = data.m_Lock; PacketHandlerMgr local_PacketHandlerMgr = data.m_PacketHandlerMgr; Socket myClientSocket = data.clientSocket; string text = null; bool flag = false; byte[] array = new byte[WfPacket.GetHeaderLength()]; byte[] array2 = null; int num = 0; do { text = ServerNet.RecvAll(data, ref array, ref array2, ref num, ref flag); if (num != 0) { data.m_LastConnTime = Environment.TickCount; } }while (text == null && !flag); } } Log.print("线程{0}ReceiveMessage结束。", data.clientSocket.RemoteEndPoint.ToString()); }
public static bool ParseHeader(byte[] packetHeader, ref ushort msgType, ref ushort msgLength) { bool result; if (packetHeader.Length < WfPacket.GetHeaderLength()) { result = false; } else { msgLength = BitConverter.ToUInt16(packetHeader, 0); msgType = BitConverter.ToUInt16(packetHeader, 2); uint server_use = BitConverter.ToUInt32(packetHeader, 4); result = true; } return(result); }