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