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); }
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); } } }