示例#1
0
        async Task <HandshakeResult> WaitHandshakeAccept()
        {
            var receive = await m_Socket.ReceiveAsync();

            var buf  = receive.Buffer;
            int size = buf.Length;

            int offset = 1;

            m_EncryptorKey.ConnectionId = BinaryUtil.ReadInt(buf, ref offset);
            var encryptor = m_EncryptorGenerator.Generate(in m_EncryptorKey);

            if (!HandshakeAccept.TryUnpack(buf, size, encryptor, out var packet))
            {
                throw new Exception("fail unpack HandshakeAccept");
            }
            return(new HandshakeResult(packet.ConnectionId, encryptor));
        }