Пример #1
0
        private NetBuffer ReceiveBuffer()
        {
            int        len        = 0;
            IPEndPoint ipepRemote = m_HostEndPoint;

            len = m_Socket.ReceiveFrom(m_ReceiveBufferTemp.GetBytes(), m_ReceiveBufferTemp.Capacity, ref ipepRemote);

            if (len <= 0)
            {
                //Debuger.LogWarning(LOG_TAG_RECV, "DoReceive() 收到的数据Len <= 0! ");
                return(null);
            }

            m_ReceiveBufferTemp.AddLength(len, 0);
            m_ReceiveBufferTemp.Position = 0;

            NetBuffer buffer = m_ReceiveBufferTemp;

            //CheckSum
            if (m_UseCheckSum_Recv)
            {
                if (!FSPCryptor.ValidCheckSum(buffer))
                {
                    return(null);
                }
            }

            //解密
            if (m_Cryptor != null)
            {
                m_Cryptor.Decrypt(buffer.GetBytes(), buffer.Length);
            }

            if (FSPDebuger.EnableLog)
            {
                Debuger.Log(LOG_TAG_RECV, "ReceiveBuffer() Size={0}, IP={1}, Buffer={2}",
                            buffer.Length, ipepRemote, buffer.ToHexString());
            }

            return(buffer);
        }
Пример #2
0
        private void DoReceive()
        {
            if (m_SystemSocket.Available <= 0)
            {
                return;
            }

            EndPoint remotePoint = new IPEndPoint(IPAddress.Any, 0);
            int      cnt         = m_SystemSocket.ReceiveFrom(m_RecvBuffer.GetBytes(), m_RecvBuffer.Capacity,
                                                              SocketFlags.None, ref remotePoint);

            if (cnt > 0)
            {
                m_RecvBuffer.AddLength(cnt, 0);
                m_RecvBuffer.Position = 0;

                KCPProxy proxy = GetKcp((IPEndPoint)remotePoint);
                if (proxy != null)
                {
                    proxy.DoReceive(m_RecvBuffer);
                }
            }
        }