コード例 #1
0
    /// <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());
    }
コード例 #2
0
    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);
    }